{"version":1,"pages":[{"id":"-LYjAG108wAG9XWkxHhs","title":"Lấy vị trí người dùng với javascript","pathname":"/javascript","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"ySpSZEeskzRKDGhTwC0I","title":"Một cách lấy dữ liệu kiểu url string sang object rất hay (ok)","pathname":"/javascript/mot-cach-lay-du-lieu-kieu-url-string-sang-object-rat-hay-ok","siteSpaceId":"sitesp_ofA2V","icon":"1"},{"id":"gcHItbQTqBttQ725B6yY","title":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok","siteSpaceId":"sitesp_ofA2V","description":"Trang reactjs https://app.gitbook.com/o/-LZtQgrzulP3oOTKQpDc/s/Aw7vXOIz8393b9JtKw5i/cach-khai-bao-cac-kieu-chung-global-cho-cac-du-an-react-typescript-ok"},{"id":"4JrSMy1uM7s6raVm59eq","title":"Giải thích dễ hiểu onEnter, onLeave, sử dụng start, end như nào FULL  Phần 1 (ok)","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/giai-thich-de-hieu-onenter-onleave-su-dung-start-end-nhu-nao-full-phan-1-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f970","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"}]},{"id":"rYLtWPeOPaVdsNrwqHIf","title":"Sử dụng onEnterBack, Label end: \"+=\" + (images.length - 1) * 100 + \"%\"  FULL  Phần 2 (ok)","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/su-dung-onenterback-label-end-+-+-images.length-1-100-+-full-phan-2-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f970","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"}]},{"id":"4CXl93tzSs1dxsxO2NEB","title":"Phương thức onUpdate sử dụng như nào, có sử dụng tương tự onEnter, onLeave ?","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/phuong-thuc-onupdate-su-dung-nhu-nao-co-su-dung-tuong-tu-onenter-onleave","siteSpaceId":"sitesp_ofA2V","icon":"question","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"}]},{"id":"8g3tmJG9j5RxveME7TIZ","title":"Sử dụng  ScrollSmoother  thay thế Locomotive Scroll hay Lenis. (ok)","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/su-dung-scrollsmoother-thay-the-locomotive-scroll-hay-lenis.-ok","siteSpaceId":"sitesp_ofA2V","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"}]},{"id":"hnxP97UZFttMbjb6MD9P","title":"Sử dụng GSAP Timeline để animate show/hide search box khi click button (ok)","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/su-dung-gsap-timeline-de-animate-show-hide-search-box-khi-click-button-ok","siteSpaceId":"sitesp_ofA2V","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"}]},{"id":"vzakP89bz5ABr2GzKqTh","title":"Sử dụng GSAP ScrollTrigger với pin để bạn hiểu cách hoạt động","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/su-dung-gsap-scrolltrigger-voi-pin-de-ban-hieu-cach-hoat-dong","siteSpaceId":"sitesp_ofA2V","description":"Nguồn tài liệu ở đây: https://github.com/dddodddo/basic","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"}]},{"id":"k4Lae9lGsmAEah6XNVCP","title":"😊 Đây là giải thích đầy đủ, ngắn gọn và thực tế về các option quan trọng của ScrollTrigger (ok)","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/su-dung-gsap-scrolltrigger-voi-pin-de-ban-hieu-cach-hoat-dong/day-la-giai-thich-day-du-ngan-gon-va-thuc-te-ve-cac-option-quan-trong-cua-scrolltrigger-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f600","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"},{"label":"Sử dụng GSAP ScrollTrigger với pin để bạn hiểu cách hoạt động"}]},{"id":"FBVd1NsNPR6riAESeqpu","title":"\" < \" trong GSAP timeline – đây là cú pháp quan trọng giúp animation của bạn chính xác và gọn gàng","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/su-dung-gsap-scrolltrigger-voi-pin-de-ban-hieu-cach-hoat-dong/less-than-trong-gsap-timeline-day-la-cu-phap-quan-trong-giup-animation-cua-ban-chinh-xac-va-gon-gang","siteSpaceId":"sitesp_ofA2V","icon":"up","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"},{"label":"Sử dụng GSAP ScrollTrigger với pin để bạn hiểu cách hoạt động"}]},{"id":"W9YesSbSq0XOKjOoqp30","title":"end: () => \"+=\" + scrollDistance có nghĩa gì? (ok)","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/su-dung-gsap-scrolltrigger-voi-pin-de-ban-hieu-cach-hoat-dong/end-greater-than-+-+-scrolldistance-co-nghia-gi-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f600","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"},{"label":"Sử dụng GSAP ScrollTrigger với pin để bạn hiểu cách hoạt động"}]},{"id":"UQru2TqOAT2KZPSRdktt","title":"scrub làm gì?","pathname":"/javascript/gsap-nghien-cuu-du-an-gsap-su-dung-js-thuan-full-ok/su-dung-gsap-scrolltrigger-voi-pin-de-ban-hieu-cach-hoat-dong/scrub-lam-gi","siteSpaceId":"sitesp_ofA2V","breadcrumbs":[{"label":"[GSAP] nghiên cứu dự án gsap sử dụng js thuần full (ok)"},{"label":"Sử dụng GSAP ScrollTrigger với pin để bạn hiểu cách hoạt động"}]},{"id":"iIQXcqQxmRvfIxOaIMsO","title":"[GSAP] Sử dụng toggle menu (ok)","pathname":"/javascript/gsap-su-dung-toggle-menu-ok","siteSpaceId":"sitesp_ofA2V"},{"id":"OLn2Qwt5zhDIG8h9g9X9","title":"Sự khác biệt giữa scrollTrigger trong gsap.to() và ScrollSmoother.create() (ok)","pathname":"/javascript/su-khac-biet-giua-scrolltrigger-trong-gsap.to-va-scrollsmoother.create-ok","siteSpaceId":"sitesp_ofA2V"},{"id":"07fIKqq1zBghHMnLV4CF","title":"[GSAP] Ứng hover khối làm website (ok)","pathname":"/javascript/gsap-ung-hover-khoi-lam-website-ok","siteSpaceId":"sitesp_ofA2V"},{"id":"nHLND7V7stEL4tKOertR","title":"ScrollTrigger.create khác gì so với  và scrollTrigger trong gsap.to (ok)","pathname":"/javascript/scrolltrigger.create-khac-gi-so-voi-va-scrolltrigger-trong-gsap.to-ok","siteSpaceId":"sitesp_ofA2V"},{"id":"j5Igl30zh1mRoj91JbIw","title":"Đặt chiều cao bằng nhau, Set equal height, same height (ok)","pathname":"/javascript/dat-chieu-cao-bang-nhau-set-equal-height-same-height-ok","siteSpaceId":"sitesp_ofA2V"},{"id":"82k3k7zem5vuYBYNEkXQ","title":"[Problem] Lấy key đầu tiên tìm thấy chứa giá trị cần tìm (ok)","pathname":"/javascript/problem-lay-key-dau-tien-tim-thay-chua-gia-tri-can-tim-ok","siteSpaceId":"sitesp_ofA2V"},{"id":"1uJQfF3mDtIl6Ry3YKvr","title":"Đoạn mã JavaScript để thêm ký tự đặc biệt vào đầu mỗi dòng trong văn bản nhiều dòng (ok)","pathname":"/javascript/doan-ma-javascript-de-them-ky-tu-dac-biet-vao-dau-moi-dong-trong-van-ban-nhieu-dong-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f978"},{"id":"AFc3eAJChvmvqIZG8NjA","title":"Tạo ra font in đậm và copy đến website để sử dụng (ok)","pathname":"/javascript/tao-ra-font-in-dam-va-copy-den-website-de-su-dung-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f60d"},{"id":"Td3Q6HInlGpBAaaW7V3g","title":"Hiệu ứng mở sách cực đẹp","pathname":"/javascript/hieu-ung-mo-sach-cuc-dep","siteSpaceId":"sitesp_ofA2V"},{"id":"zl2rwaN7bo9XI0WL1ich","title":"JS: Scroll Animation using Intersection Observer API 🤩 (ok)","pathname":"/javascript/js-scroll-animation-using-intersection-observer-api-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f929","description":"https://codepen.io/iamsaief/pen/qBYPdGx"},{"id":"n6OAiBUav5JYFmkCBLeh","title":"Draw svg on scroll Full (ok)","pathname":"/javascript/draw-svg-on-scroll-full-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f605","description":"https://codepen.io/asprajapati/pen/zYxodGM"},{"id":"vhK2Q0dFL0PT1DC40FAa","title":"Install Linguise on any domain dịch tự động (ok)","pathname":"/javascript/install-linguise-on-any-domain-dich-tu-dong-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f604"},{"id":"qhP7gvXTMMf7nTWrChd7","title":"Sử dụng ajax tạo popup cho các bài viết wordrpess mattervn.com (ok)","pathname":"/javascript/su-dung-ajax-tao-popup-cho-cac-bai-viet-wordrpess-mattervn.com-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f605"},{"id":"aquksmibOWK7ezTu898g","title":"PWA - beforeinstallprompt toplusgames.com (ok)","pathname":"/javascript/pwa-beforeinstallprompt-toplusgames.com-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f606","description":""},{"id":"Pxj5GgDsLoebUWZ9re8o","title":"How to Use the HTML5 Full-Screen API (Again) (ok)","pathname":"/javascript/how-to-use-the-html5-full-screen-api-again-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.sitepoint.com/use-html5-full-screen-api/"},{"id":"eTSFgQKgOXFLTJNVSjG8","title":"[ERROR GAME] fix lỗi không load iframe gamedistribution.com for toplusgames.com (ok)","pathname":"/javascript/error-game-fix-loi-khong-load-iframe-gamedistribution.com-for-toplusgames.com-ok","siteSpaceId":"sitesp_ofA2V","description":"https://toplusgames.com"},{"id":"zWBcjoqFqyNgtefYjdVE","title":"jQuery Plugin To Create Animated Placeholders - placeholderTypewriter (ok)","pathname":"/javascript/jquery-plugin-to-create-animated-placeholders-placeholdertypewriter-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f605","description":"https://www.jqueryscript.net/text/jQuery-Plugin-To-Create-Animated-Placeholders-placeholderTypewriter.html#google_vignette"},{"id":"DFcP5KQ6JaEYIedgptFP","title":"Làm chức năng thông báo khách hàng đăng ký namkhoahanoi.vn (ok)","pathname":"/javascript/lam-chuc-nang-thong-bao-khach-hang-dang-ky-namkhoahanoi.vn-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f60d","description":""},{"id":"GiPJnOTxCjZSPTi3KRg4","title":"Tencent Captcha Demo (ok)","pathname":"/javascript/tencent-captcha-demo-ok","siteSpaceId":"sitesp_ofA2V","description":"https://codesandbox.io/s/4m7lq?file=/index.html:0-1611"},{"id":"Ymar30NTS9JVS8YHvg8c","title":"Send Mail same  javascript elasticemail (ok)","pathname":"/javascript/send-mail-same-javascript-elasticemail-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f609","description":"https://app.elasticemail.com/marketing/settings/new/create-smtp"},{"id":"3L7f6ltpXk99ZIEp4xGT","title":"Các tool phong thuỷ (ok)","pathname":"/javascript/cac-tool-phong-thuy-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f973","description":"https://drive.google.com/file/d/1S-JsS_mOaMCeOrg_NQDf3pu2TtcRYLiq/view?usp=share_link"},{"id":"XbaFFkACA6NGKkLE4nLk","title":"Nice Select A lightweight Vanilla JavaScript plugin (ok)","pathname":"/javascript/nice-select-a-lightweight-vanilla-javascript-plugin-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f607","description":"https://github.com/bluzky/nice-select2"},{"id":"z848sN0mD45SRrmiATwl","title":"Merge objects with the same id but sum values of the objects (ok)","pathname":"/javascript/merge-objects-with-the-same-id-but-sum-values-of-the-objects-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/44332180/merge-objects-with-the-same-id-but-sum-values-of-the-objects"},{"id":"8tzrk89ouuO7BwBWwv9O","title":"Page: DOMContentLoaded, load, beforeunload, unload phần 1 (ok)","pathname":"/javascript/page-domcontentloaded-load-beforeunload-unload-phan-1-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f605","description":"https://javascript.info/onload-ondomcontentloaded"},{"id":"faDOxPFzNvPYaEPGjDl4","title":"Scripts: async, defer phần 2(ok)","pathname":"/javascript/scripts-async-defer-phan-2-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f60d","description":"https://javascript.info/script-async-defer"},{"id":"Me7TrLU7WYRGl0qQOD3t","title":"Javascript Array chunkArrayInGroups(arr, size)","pathname":"/javascript/javascript-array-chunkarrayingroups-arr-size","siteSpaceId":"sitesp_ofA2V","emoji":"1f602","description":"http://www.java2s.com/ref/javascript/javascript-array-chunkarrayingroups-arr-size.html"},{"id":"UvH6PKWcx0UW9e4lP8QQ","title":"Sequentially Resolve Promises Works, Giải quyết tuần tự các lời hứa hoạt động (ok)","pathname":"/javascript/sequentially-resolve-promises-works-giai-quyet-tuan-tu-cac-loi-hua-hoat-dong-ok","siteSpaceId":"sitesp_ofA2V","description":"https://css-tricks.com/why-using-reduce-to-sequentially-resolve-promises-works/"},{"id":"HKxcfuF5Ka8ND07q05Wj","title":"Using Async / Await with the Array Reduce Method API (ok)","pathname":"/javascript/using-async-await-with-the-array-reduce-method-api-ok","siteSpaceId":"sitesp_ofA2V","description":"D:\\Tiah\\working\\MARUNO-21\\test.html"},{"id":"eLGoT4HlKg8CyOeDScEZ","title":"Flatten an array of arrays,merge, làm phẳng một mảng các mảng (ok)","pathname":"/javascript/flatten-an-array-of-arrays-merge-lam-phang-mot-mang-cac-mang-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays"},{"id":"h2S6UXMoeejtgDLRXKYe","title":"Dependent Dropdown Full (ok)","pathname":"/javascript/dependent-dropdown-full-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f60c","description":""},{"id":"77EKH6xonYEyUIzSKfX8","title":"Select Box Change Dependent Options dynamically (JavaScript Object)","pathname":"/javascript/select-box-change-dependent-options-dynamically-javascript-object","siteSpaceId":"sitesp_ofA2V","emoji":"1f973","description":"https://www.sanwebe.com/2013/05/select-box-change-dependent-options-dynamically"},{"id":"RP51VeYuH9CuLCsZNU9K","title":"Add elements dynamically full (ok)","pathname":"/javascript/add-elements-dynamically-full-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f929","description":""},{"id":"0k6tf8UN3Nyg68XqSSnv","title":"👌Multiple versions jquery (ok)","pathname":"/javascript/multiple-versions-jquery-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f605","description":"https://github.com/roytuts/jquery/tree/master/multiple-versions-jquery"},{"id":"qeuaIdDq24SYVZJLp4dG","title":"Cách sử dụng jQuery trong sweetAlert2 là chúng ta phải sử dụng didOpen full (ok)","pathname":"/javascript/cach-su-dung-jquery-trong-sweetalert2-la-chung-ta-phai-su-dung-didopen-full-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f60d","description":"https://sweetalert2.github.io/recipe-gallery/timer-methods.html?utm_source=zalo&utm_medium=zalo&utm_campaign=zalo"},{"id":"EVzhGgwh2WunZs77ZGEU","title":"😁 mdbgo.io, mdbootstrap.com full (ok)","pathname":"/javascript/mdbgo.io-mdbootstrap.com-full-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f601","description":"https://mdbgo.io/marta-szymanska/mdb5-demo-pro-design-blocks/pro/data/datatables.html#section-introduction"},{"id":"wgS6il9GHStREh8KzMPK","title":"Chú ý nếu lỗi cảnh báo từ khóa new nếu dùng trong js thường chúng ta sẽ sử dụng trong mudule (ok)","pathname":"/javascript/chu-y-neu-loi-canh-bao-tu-khoa-new-neu-dung-trong-js-thuong-chung-ta-se-su-dung-trong-mudule-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f92a","description":""},{"id":"Ym35qpcBxEtCDrCd3VyG","title":"reCAPTCHA javascript (ok)","pathname":"/javascript/recaptcha-javascript-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f61d","description":"https://stackoverflow.com/questions/50015336/google-recaptcha-within-sweetalert-modal-window"},{"id":"vbVIgrEkQD7pSrHkHKGR","title":"Firework Simulator v2 Phao Hoa (ok)","pathname":"/javascript/firework-simulator-v2-phao-hoa-ok","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/MillerTime/pen/XgpNwb"},{"id":"io0F0iRMmmc3vGIBStSx","title":"Active scroll center (ok)","pathname":"/javascript/active-scroll-center-ok","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/onigetoc/pen/zPvLLG"},{"id":"biswhcAFCR82nkYhOi7i","title":"Sort array of objects by string property value (ok)","pathname":"/javascript/sort-array-of-objects-by-string-property-value-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f92a","description":"https://stackoverflow.com/questions/1129216/sort-array-of-objects-by-string-property-value"},{"id":"GrKoVFBIgHIISFnpdGit","title":"findIndex, find index in Array object (ok)","pathname":"/javascript/findindex-find-index-in-array-object-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f60f","description":""},{"id":"UAHTzYgfyHnJ9MeOXkd3","title":"Sử dụng nhiều toán tử 3, multiple Ternary Operators (ok)","pathname":"/javascript/su-dung-nhieu-toan-tu-3-multiple-ternary-operators-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f602","description":"https://stackoverflow.com/questions/7757549/multiple-ternary-operators"},{"id":"Ya3iuexa2Gl6pFf3fWRg","title":"A simple and easy to use library that creates fullscreen scrolling websites fullPage.js (ok)","pathname":"/javascript/a-simple-and-easy-to-use-library-that-creates-fullscreen-scrolling-websites-fullpage.js-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f605","description":"https://github.com/alvarotrigo/fullpage.js"},{"id":"Y6zMukdL1UR50iqYxTQd","title":"Xây dựng ứng dụng CRUD sử dụng Vue.js trong Laravel (ok)","pathname":"/javascript/xay-dung-ung-dung-crud-su-dung-vue.js-trong-laravel-ok","siteSpaceId":"sitesp_ofA2V","description":"https://allaravel.com/blog/xay-dung-ung-dung-crud-su-dung-vue-js-trong-laravel/"},{"id":"GRxvT5z7TLO6C3iSndts","title":"[Chart] Morris.js Line & Area Charts,Bar Charts, Donut Charts, graph (ok)","pathname":"/javascript/chart-morris.js-line-and-area-charts-bar-charts-donut-charts-graph-ok","siteSpaceId":"sitesp_ofA2V","description":"https://morrisjs.github.io/morris.js/"},{"id":"UuBBOS8ijrPmgSotRo4i","title":"[Chart] Chart.js","pathname":"/javascript/chart-chart.js","siteSpaceId":"sitesp_ofA2V","description":"https://www.chartjs.org/"},{"id":"HRMjtks1TIIPcwjzBmHf","title":"Multi select checkbox table bootstrap (ok)","pathname":"/javascript/multi-select-checkbox-table-bootstrap-ok","siteSpaceId":"sitesp_ofA2V","description":"https://mdbootstrap.com/snippets/standard/softcon/3353769?view=side"},{"id":"GCfk4U5VjkPYXSmprgKr","title":"jquery new, jquery old, jquery migrate (ok)","pathname":"/javascript/jquery-new-jquery-old-jquery-migrate-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f600","description":""},{"id":"lsAObSCzNX6rYzcMNSLZ","title":"Popup slide up from the bottom overflowing other div blocks (ok)","pathname":"/javascript/popup-slide-up-from-the-bottom-overflowing-other-div-blocks-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/37156638/popup-slide-up-from-the-bottom-overflowing-other-div-blocks"},{"id":"4LjO8HQ71Hd2mqSYjb7y","title":"ASYNC JavaScript (CALLBACK, PROMISES, ASYNC AWAIT) video (ok)","pathname":"/javascript/async-javascript-callback-promises-async-await-video-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.youtube.com/watch?v=XYVJKnZc0SY"},{"id":"oC1bOf8xNZ9YbMsSJ1PN","title":"=== START jQuery Mobile ===","pathname":"/javascript/start-jquery-mobile","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"G627hQDogIXieILpoezk","title":"Data Attributes full (ok)","pathname":"/javascript/data-attributes-full-ok","siteSpaceId":"sitesp_ofA2V","description":"https://api.jquerymobile.com/data-attribute/"},{"id":"Zh6kMqVgLLWj8sHEpoq1","title":"Viết một ứng dụng Restaurant Picke sử dụng \"back menu\" (ok)","pathname":"/javascript/viet-mot-ung-dung-restaurant-picke-su-dung-back-menu-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/jquery_mobile/btn_back_button.htm"},{"id":"mEUgRONdzA7UnGXKw8Kx","title":"Viết một ứng dụng thời tiết, Weather sử dụng panel (ok)","pathname":"/javascript/viet-mot-ung-dung-thoi-tiet-weather-su-dung-panel-ok","siteSpaceId":"sitesp_ofA2V","description":"https://teamtreehouse.com/community/finished-build-a-mobile-web-app-using-jquery-mobile-ajax-any-ideas-on-how-to-add-custom-location-with-a-form"},{"id":"l5UFknKoJ2NbUwhAduBj","title":"jQuery Mobile Tutorial w3schools.com (ok)","pathname":"/javascript/jquery-mobile-tutorial-w3schools.com-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.quanzhanketang.com/jquerymobile/default.html"},{"id":"FqPRvkOYJJ0vYjM0IACo","title":"jQuery Mobile","pathname":"/javascript/jquery-mobile","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/jquery-mobile-73KbvZpOMmWB"},{"id":"Zk1UicPVGS4emNYHjgNS","title":"jQuery Mobile - Events (ok)","pathname":"/javascript/jquery-mobile-events-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/jquery_mobile/jqm_mobile_events.htm"},{"id":"DnHsiBiIhVL2t5k6onSF","title":"Back button in jquery mobile (ok)","pathname":"/javascript/back-button-in-jquery-mobile-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"GEBPfX2pZVanFNWW4uEz","title":"=== END jQuery Mobile ===","pathname":"/javascript/end-jquery-mobile","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"63eeP2srDpkt0Xdo2b5W","title":"removeDuplicates, Remove duplicate values from JS array, remove all duplicates an array object (ok)","pathname":"/javascript/removeduplicates-remove-duplicate-values-from-js-array-remove-all-duplicates-an-array-object-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"ex5TIaPs454SW4FvmjKB","title":"Sử dụng thư viện jquery.hoverdir.js để làm hiệu ứng hover tuyệt đẹp (ok)","pathname":"/javascript/su-dung-thu-vien-jquery.hoverdir.js-de-lam-hieu-ung-hover-tuyet-dep-ok","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/webmandesign/jquery.hoverdir"},{"id":"442eQt7Apxf31ZbMlQ6l","title":"Modernizr là gì ? Sử dụng nó cho những trình duyệt cũ ra sao? (ok)","pathname":"/javascript/modernizr-la-gi-su-dung-no-cho-nhung-trinh-duyet-cu-ra-sao-ok","siteSpaceId":"sitesp_ofA2V","description":"https://vn4u.vn/modernizr-la-gi-su-dung-no-cho-nhung-trinh-duyet-cu-ra-sao/"},{"id":"2Cnp040gQhoB1MPZk7Xc","title":"Nhận biết tính năng CSS: Modernizr hay Feature Queries? (ok)","pathname":"/javascript/nhan-biet-tinh-nang-css-modernizr-hay-feature-queries-ok","siteSpaceId":"sitesp_ofA2V","description":"https://webdesign.tutsplus.com/vi/tutorials/css-feature-detection-modernizr-or-feature-queries--cms-23508"},{"id":"8xgYxbDeBxGzozQRwx12","title":"[SALESFORCE] Remote Action function in Visualforce Page (ok)","pathname":"/javascript/salesforce-remote-action-function-in-visualforce-page-ok","siteSpaceId":"sitesp_ofA2V","description":"https://webkul.com/blog/remote-action-function-visualforce-page/"},{"id":"NgHLs80WFPALwLmJ3sWN","title":"ScrollIt.js menu (ok)","pathname":"/javascript/scrollit.js-menu-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"03xqLg2BtqcbeLz3vHa4","title":"Cách sử dụng scrollTo vanilla cực chất 😘 (ok)","pathname":"/javascript/cach-su-dung-scrollto-vanilla-cuc-chat-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"4aAQNdfULAqJxZEKEjCX","title":"Một bài toán xử lý bất đồng bộ trong kintone để lấy số requet quá giới hạn (OK)","pathname":"/javascript/mot-bai-toan-xu-ly-bat-dong-bo-trong-kintone-de-lay-so-requet-qua-gioi-han-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"mS7yPMv7Mm8HHaF8K9kX","title":"hexagon thư viện tạo avatar Canvas (ok)","pathname":"/javascript/hexagon-thu-vien-tao-avatar-canvas-ok","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/tmahour1/pen/mdVeEbB"},{"id":"1UOJNb4CaiBsgk2Uo0jQ","title":"Sử dụng Object.assign và để copy dữ liệu, edit, input, form (ok)","pathname":"/javascript/su-dung-object.assign-va-de-copy-du-lieu-edit-input-form-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f605","description":""},{"id":"tyg79GRvLH3GkYherFcu","title":"Một cách đặt và gán giá trị trong mảng, object cự ngắn gọn (ok)","pathname":"/javascript/mot-cach-dat-va-gan-gia-tri-trong-mang-object-cu-ngan-gon-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"bw2EGUuIThdvqxsmwfQi","title":"[LAZY] jQuery.Lazy và tạo background-loading cực chất (ok)","pathname":"/javascript/lazy-jquery.lazy-va-tao-background-loading-cuc-chat-ok","siteSpaceId":"sitesp_ofA2V","description":"http://jquery.eisbehr.de/lazy/example_basic-usage"},{"id":"S02EfsWUoZWh2TBf4Mpb","title":"Ví dụ Sử dụng sẵn thư viện masonry của wordpres (ok)","pathname":"/javascript/vi-du-su-dung-san-thu-vien-masonry-cua-wordpres-ok","siteSpaceId":"sitesp_ofA2V","description":"https://app.gitbook.com/o/-LYjAG1--qK4zFZOXpzU/s/-LYjAG13rAPdbArSfRyB/kiem-tra-hinh-anh-da-duoc-tai-voi-thu-vien-imagesloaded-ok"},{"id":"uLPXtJBg3zoAZKRj3TsY","title":"Ảnh base64 dùng làm src, placeholder (ok)","pathname":"/javascript/anh-base64-dung-lam-src-placeholder-ok","siteSpaceId":"sitesp_ofA2V","description":"https://app.gitbook.com/o/-LWPtKFTTwWPPDkKZO5o/s/-LWPtKFbhw0XehxVuoiZ/~/changes/gJag2zohLKtsang7XMPW/anh-base64-dung-lam-src-placeholder-ok"},{"id":"YM0fhJBBHN8P0WXvYkum","title":"Kiểm tra hình ảnh đã được tải với thư viện imagesLoaded (ok)","pathname":"/javascript/kiem-tra-hinh-anh-da-duoc-tai-voi-thu-vien-imagesloaded-ok","siteSpaceId":"sitesp_ofA2V","description":"https://imagesloaded.desandro.com/"},{"id":"OckYUmrKLkEQg9CuuN06","title":"Check if Function Exists before Calling? (ok)","pathname":"/javascript/check-if-function-exists-before-calling-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/13657204/check-if-function-exists-before-calling"},{"id":"ppB5OqUQPn6X7UUP8vxg","title":"Async/Await Javascript Full Example (ok)","pathname":"/javascript/async-await-javascript-full-example-ok","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/mariusschulz/egghead-async-await"},{"id":"Dw93RAhf3CSuwAqHv7KF","title":"Thenables in JavaScript phục vụ cho bài viết trên (ok)","pathname":"/javascript/thenables-in-javascript-phuc-vu-cho-bai-viet-tren-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"sWQonlYj1c4Lxac8P3bY","title":"Script distance, khoảng cách (ok)","pathname":"/javascript/script-distance-khoang-cach-ok","siteSpaceId":"sitesp_ofA2V","description":"https://taxifamilycar.com/?fbclid=IwAR3sEkJBJ4cJyoxVxZTi0D3ptOV--VvQOjzRSn48OQkD3bi-EQWF6iQOXzE"},{"id":"NWuPxl9KqTcgAHqjnXk7","title":"Time, Date full (ok)","pathname":"/javascript/time-date-full-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"NMfC3b1D54dLQ5TlZRjL","title":"Function getAllDatesOfMonth (ok)","pathname":"/javascript/function-getalldatesofmonth-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"OOgaQpvGk7Qd47ZQJvat","title":"How do I make a placeholder for a 'select' box? (ok)","pathname":"/javascript/how-do-i-make-a-placeholder-for-a-select-box-ok","siteSpaceId":"sitesp_ofA2V","description":"https://app.gitbook.com/o/-LZhVmC9XbAGCsj7ojqp/s/-LZhVmCGQ07Fy-3ttCbf/c/PxEKVZagtbh4qkctqyVH/how-do-i-make-a-placeholder-for-a-select-box"},{"id":"otHcuysJKiLhfFhF4prE","title":"Library choise (ok)","pathname":"/javascript/library-choise-ok","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/Choices-js/Choices"},{"id":"3pSe5H3TmQamLLHpt83I","title":"jQuery - Redirect with post, Get data php (ok)","pathname":"/javascript/jquery-redirect-with-post-get-data-php-ok","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/mgalante/jquery.redirect"},{"id":"TzGpxPzKPsRm4O3QhHDD","title":"How to pass data from one page to another page html (ok)","pathname":"/javascript/how-to-pass-data-from-one-page-to-another-page-html-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"yBiq2wtxc07uN6J05PmE","title":"how to send data onClick() to another php for processing using post or get?","pathname":"/javascript/how-to-send-data-onclick-to-another-php-for-processing-using-post-or-get","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"rNFvCAFVJZ2ZuLIwIsD6","title":"draw grid, vẽ grid (ok)","pathname":"/javascript/draw-grid-ve-grid-ok","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/bunnypi04/pen/MWayaam"},{"id":"zUc1IQyCmYAgZ5hGSO18","title":"Fullscreen Horizontal Page Slider with jQuery and CSS3 - HSlider scroll template html (ok)","pathname":"/javascript/fullscreen-horizontal-page-slider-with-jquery-and-css3-hslider-scroll-template-html-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.jqueryscript.net/demo/Fullscreen-Horizontal-Page-Slider-with-jQuery-CSS3-HSlider/"},{"id":"-MiCH7AhmCok0K6L3g5P","title":"_.template, UnderscoreJS Templates Full (ok)","pathname":"/javascript/_.template-underscorejs-templates-1","siteSpaceId":"sitesp_ofA2V","description":"https://theshravan.net/blog/how-to-use-underscorejs-templates/"},{"id":"-MhvA2PnmKVbSUylPOfO","title":"Character limit on tag type input number (ok)","pathname":"/javascript/character-limit-on-tag-type-input-number-ok","siteSpaceId":"sitesp_ofA2V","description":"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number"},{"id":"-MhvCcQfN0DCcvvcYE3I","title":"How to set maximum length in input type=number (ok)","pathname":"/javascript/how-to-set-maximum-length-in-input-type-number-ok","siteSpaceId":"sitesp_ofA2V","description":"https://app.gitbook.com/@learnreac/s/project/how-to-set-maximum-length-in-input-type-number-ok"},{"id":"-Mh_JQyV6j8kpCZHYMbG","title":"========= START JEST =======","pathname":"/javascript/start-jest","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-Mh_Jahs7OSk2KWJYC3X","title":"Getting Started (ok)","pathname":"/javascript/getting-started","siteSpaceId":"sitesp_ofA2V","description":"https://jestjs.io/docs/getting-started"},{"id":"-Mhh0MBfdbkKSZM8UJYO","title":"Using Matchers (ok)","pathname":"/javascript/using-matchers-1","siteSpaceId":"sitesp_ofA2V","description":"https://jestjs.io/docs/using-matchers"},{"id":"-Mhh8Pd4uAx7CBt2hgr_","title":"Testing Asynchronous Code","pathname":"/javascript/testing-asynchronous-code","siteSpaceId":"sitesp_ofA2V","description":"https://jestjs.io/docs/asynchronous"},{"id":"-MhhF09C8YYc8OXrkl35","title":"Setup and Teardown (ok)","pathname":"/javascript/setup-and-teardown-ok","siteSpaceId":"sitesp_ofA2V","description":"https://jestjs.io/docs/setup-teardown"},{"id":"-MhhL7mqeIpJ6F93A7UL","title":"Mock Functions","pathname":"/javascript/mock-functions","siteSpaceId":"sitesp_ofA2V","description":"https://jestjs.io/docs/mock-functions"},{"id":"-MhivkCSWf-CIx1ubidc","title":"Jest Platform","pathname":"/javascript/jest-platform","siteSpaceId":"sitesp_ofA2V","description":"https://jestjs.io/docs/jest-platform"},{"id":"-Mht-oevkAXaWWFVsyn6","title":"Jest tutorial","pathname":"/javascript/jest-tutorial","siteSpaceId":"sitesp_ofA2V","description":"https://zetcode.com/javascript/jest/"},{"id":"-Mhj5z3GNolfc3uD8KGH","title":"Testing trong Javascript với Jest (Phần 1) (ok)","pathname":"/javascript/testing-trong-javascript-voi-jest-phan-1-ok","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/testing-trong-javascript-voi-jest-phan-1-LzD5d2JwZjY"},{"id":"-Mhj8AcWVg-Sr2aHXSWL","title":"Testing trong Javascript với Jest (Phần 2)","pathname":"/javascript/testing-trong-javascript-voi-jest-phan-2","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/testing-trong-javascript-voi-jest-phan-2-RQqKLqo4Z7z"},{"id":"-MhjEcZMoWJhTq7WGcrJ","title":"Giới thiệu về Jest (Delightful JavaScript Testing)","pathname":"/javascript/gioi-thieu-ve-jest-delightful-javascript-testing","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/gioi-thieu-ve-jest-delightful-javascript-testing-gDVK2wWeZLj"},{"id":"-MhjFvgss5z9kplrVY9_","title":"Thử nghiệm phát triển theo hướng phản ứng với Jest và Enzyme","pathname":"/javascript/thu-nghiem-phat-trien-theo-huong-phan-ung-voi-jest-va-enzyme","siteSpaceId":"sitesp_ofA2V","description":"https://ichi.pro/vi/thu-nghiem-phat-trien-theo-huong-phan-ung-voi-jest-va-enzyme-46647418302577"},{"id":"-MhjFIG6xaQTREi-SS9Y","title":"Cách kiểm tra các thành phần phản ứng với Jest và Enzyme, Phần 1","pathname":"/javascript/cach-kiem-tra-cac-thanh-phan-phan-ung-voi-jest-va-enzyme-phan-1","siteSpaceId":"sitesp_ofA2V","description":"https://helpex.vn/article/cach-kiem-tra-cac-thanh-phan-phan-ung-voi-jest-va-enzyme-phan-1-5c54ddfd507419248c9b0108"},{"id":"-MhjFTunBY4wtkKOMID0","title":"Cách kiểm tra thành phần phản ứng với Jest và Enzyme, Phần 2","pathname":"/javascript/cach-kiem-tra-thanh-phan-phan-ung-voi-jest-va-enzyme-phan-2","siteSpaceId":"sitesp_ofA2V","description":"https://helpex.vn/article/cach-kiem-tra-thanh-phan-phan-ung-voi-jest-va-enzyme-phan-2-5c54de20507419248c9b0128"},{"id":"-MhjBzy93nDHAyGxPuAD","title":"Jest js mock jquey and lib","pathname":"/javascript/jest-js-mock-jquey-and-lib","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/jest-js-mock-jquey-and-lib-3Q75wQMeZWb"},{"id":"-MhjG65BGbjACj6xSkUH","title":"Unit testing Các thành phần React với Enzyme và Jest","pathname":"/javascript/unit-testing-cac-thanh-phan-react-voi-enzyme-va-jest","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/test-javascript-with-jest-phan-1-V3m5W0VgKO7"},{"id":"-MhjGUyT03PbqCR3QgyE","title":"Hướng dẫn viết unit test React với Jest và Enzyme (P1)","pathname":"/javascript/huong-dan-viet-unit-test-react-voi-jest-va-enzyme-p1","siteSpaceId":"sitesp_ofA2V","description":"https://blog.haposoft.com/unit-test-react-applications-with-jest-and-enzyme/"},{"id":"-MhjGbsLuEUxhaK2y6oG","title":"Tôi đã test các React component như thế nào? (phần 2)","pathname":"/javascript/toi-da-test-cac-react-component-nhu-the-nao-phan-2","siteSpaceId":"sitesp_ofA2V","description":"https://techmaster.vn/posts/34250/toi-da-test-cac-react-component-nhu-the-nao-phan-2"},{"id":"-MhjGie5_ICKi8VeCzwp","title":"Test component trong React với Jest","pathname":"/javascript/test-component-trong-react-voi-jest","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/test-component-trong-react-voi-jest-maGK77WaKj2"},{"id":"-MhjGnrVXhPP1Q9NN3y4","title":"Test Component với Jest và Emzyme","pathname":"/javascript/test-component-voi-jest-va-emzyme","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/test-component-voi-jest-va-emzyme-ORNZqBXMl0n"},{"id":"-MhjH3i5HQPz7AQAHhXE","title":"Tổng quan về unit test cho dự án react redux saga với Jest Part 1","pathname":"/javascript/tong-quan-ve-unit-test-cho-du-an-react-redux-saga-voi-jest-part-1","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/tong-quan-ve-unit-test-cho-du-an-react-redux-saga-voi-jest-part-1-aWj53N88l6m"},{"id":"-Mh_JXnr-rvOLYCP_Jqy","title":"========= END JEST =======","pathname":"/javascript/end-jest","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MhUFD2GxD9ctgH0_ZPr","title":"======= START GULP TUTORIAL ======","pathname":"/javascript/start-gulp-tutorial","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MhSnjL1Oeu-cDO68KSH","title":"[GULP] Tìm hiểu về Gulp.js","pathname":"/javascript/gulp-tim-hieu-ve-gulp.js","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/tim-hieu-ve-gulpjs-naQZRw2jlvx"},{"id":"-MhT1zfJOUWzvhmmtCE5","title":"[GULP] Gulp Tutorial","pathname":"/javascript/gulp-gulp-tutorial","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/gulp/index.htm"},{"id":"-MhUH0bMj1eDh9hcv1y6","title":"[GULP] Gulp - Developing An Application (ok)","pathname":"/javascript/gulp-developing-an-application-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/gulp/gulp_developing_application.htm"},{"id":"-MhUHpWOv4aqheSdjxrG","title":"[GULP] Gulp - Combining Tasks (ok)","pathname":"/javascript/gulp-combining-tasks-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/gulp/gulp_combining_tasks.htm"},{"id":"-MhUJXrbc0o-JJ-F9Kne","title":"[GULP] Gulp - Watch (ok)","pathname":"/javascript/gulp-watch-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/gulp/gulp_watch.htm"},{"id":"-MhUKaOzFpMPCzjfdgpP","title":"[GULP] Gulp - Live Reload","pathname":"/javascript/gulp-live-reload","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/gulp/gulp_live_reload.htm"},{"id":"-MhUM2c7TdWx_2yjufCc","title":"[GULP] Gulp - Optimizing CSS and JavaScript","pathname":"/javascript/gulp-optimizing-css-and-javascript","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/gulp/gulp_optimizing_css_javascript_files.htm"},{"id":"-MhUWMqyXOoDDGE3ekeh","title":"[GULP] Gulp - Optimizing Images","pathname":"/javascript/gulp-optimizing-images","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/gulp/gulp_optimizing_images.htm"},{"id":"-MhUbHWT_moVctzcTvEH","title":"[GULP] Gulp - Useful Plugins","pathname":"/javascript/gulp-useful-plugins","siteSpaceId":"sitesp_ofA2V","description":"https://www.tutorialspoint.com/gulp/gulp_useful_plugins.htm"},{"id":"-MhUb_MiriUdv-e7lvhU","title":"[GULP] Gulp - Cleaning Unwanted Files","pathname":"/javascript/gulp-cleaning-unwanted-files","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MhUcNQ7BpH3k7JTXpqR","title":"Đọc thêm những tài liệu trang khác","pathname":"/javascript/doc-them-nhung-tai-lieu-trang-khac","siteSpaceId":"sitesp_ofA2V","description":"https://riptutorial.com/gulp"},{"id":"-MhUFIPUINzTbzuhVTct","title":"======= END GULP TUTORIAL ======","pathname":"/javascript/end-gulp-tutorial","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"UNgJk7kF5B1P82mBPS4y","title":"Tham số smartSpeed trong Owl Carousel (ok","pathname":"/javascript/tham-so-smartspeed-trong-owl-carousel-ok","siteSpaceId":"sitesp_ofA2V"},{"id":"-MQVaztLmkXhqNagOt7c","title":"Prevent form submission on Enter key press, keyCode (ok)","pathname":"/javascript/prevent-form-submission-on-enter-key-press-keycode-ok","siteSpaceId":"sitesp_ofA2V","description":"https://api.jquery.com/keypress/"},{"id":"-MN6r7z2GgeP_XRoRYGE","title":"Lấy kích thước ảnh gốc image (ok)","pathname":"/javascript/lay-kich-thuoc-anh-goc-image-ok","siteSpaceId":"sitesp_ofA2V","description":"https://app.gitbook.com/@javascriptuse/s/advanced/jquery.naturalwidth-jquery.naturalheight-images-natural-width-height-native-width-ok"},{"id":"RgYdcRkx4PpmJF9iWWA6","title":"How to Center Carousel Slider (ok)","pathname":"/javascript/how-to-center-carousel-slider-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f606","description":"https://codepen.io/Webevasion/pen/EPMGQe"},{"id":"qZKQjfsbXJqs87lqzCJZ","title":"Putting Dots onto Owl Carousel Instead of below specialtouchgifts.com.au (ok)","pathname":"/javascript/putting-dots-onto-owl-carousel-instead-of-below-specialtouchgifts.com.au-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/43900737/putting-dots-onto-owl-carousel-instead-of-below"},{"id":"-MYnTZdR3dqN1qdL6diD","title":"Cách xây dựng một Full Screen Carousel với Owl.js","pathname":"/javascript/cach-xay-dung-mot-full-screen-carousel-voi-owl.js","siteSpaceId":"sitesp_ofA2V","description":"https://webdesign.tutsplus.com/vi/tutorials/how-to-build-a-full-screen-responsive-carousel-slider-with-owljs--cms-31771"},{"id":"oa3LYndMTAoLaLZP1Hv9","title":"Lazy load với owl.carousel.js (ok)","pathname":"/javascript/lazy-load-voi-owl.carousel.js-ok","siteSpaceId":"sitesp_ofA2V","description":"https://owlcarousel2.github.io/OwlCarousel2/demos/lazyLoad.html"},{"id":"-MYnTmIB8QjMVQUAABVn","title":"Show half of the other item on Owl Carousel vinmec.com items: 1.5 (ok)","pathname":"/javascript/show-half-of-the-other-item-on-owl-carousel-vinmec.com-items-1.5-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MYnUzrSHiWG4mteXNgS","title":"Show half of the other item on Owl Carousel vinmec.com stagePadding (ok)","pathname":"/javascript/show-half-of-the-other-item-on-owl-carousel-vinmec.com-stagepadding-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MGSrtVeXKZHWNjD6cGh","title":"------------ Start Fetch  -----------","pathname":"/javascript/start-fetch","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"2UL7i3Ol3ELWh4t6ss7q","title":"Using Fetch Full","pathname":"/javascript/using-fetch-full","siteSpaceId":"sitesp_ofA2V","description":"https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch"},{"id":"QcjARjVhhuDUPz1nbkqO","title":"Javascript  Fetch JSON PHP Complete FormData phần 1(ok)","pathname":"/javascript/javascript-fetch-json-php-complete-formdata-phan-1-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f605","description":""},{"id":"CYsT0xrAE8T5NhxNQHio","title":"Một ví dụ quá đỉnh lấy dữ liệu của form submit trong js bằng đối tượng new FormData + php phần 2(ok)","pathname":"/javascript/mot-vi-du-qua-dinh-lay-du-lieu-cua-form-submit-trong-js-bang-doi-tuong-new-formdata-+-php-phan-2-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MMcCy-7EEEvxFp_cw0i","title":"Có một sự thật sử dụng async đồng nghĩa với trả về kết quả là PROMISE (ok)","pathname":"/javascript/co-mot-su-that-su-dung-async-dong-nghia-voi-tra-ve-ket-qua-la-promise-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"lZTsBpeOUOvU1jk3fqHC","title":"Promise.all full (ok)","pathname":"/javascript/promise.all-full-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f605","description":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all"},{"id":"-MMcQ-6yfSmcd2HEc1_X","title":"All you need to know about Promise.all","pathname":"/javascript/all-you-need-to-know-about-promise.all","siteSpaceId":"sitesp_ofA2V","description":"https://www.freecodecamp.org/news/promise-all-in-javascript-with-example-6c8c5aea3e32/"},{"id":"-MMcGCWfK7nfUbgPV0bW","title":"[PROMISE] Promise.all()","pathname":"/javascript/promise-promise.all","siteSpaceId":"sitesp_ofA2V","description":"https://developer.mozilla.org/vi/docs/Web/JavaScript/Reference/Global_Objects/Promise/all"},{"id":"-MMbsrliEQN3yiO2mjYE","title":"[PROMISE] Tìm hiểu về promise trong ES6","pathname":"/javascript/promise-tim-hieu-ve-promise-trong-es6","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/tim-hieu-ve-promise-trong-es6-DXOkRjPPkdZ"},{"id":"-MMbtcuOJjgYiimsBhsN","title":"[PROMISE] Introduction to Promises","pathname":"/javascript/promise-introduction-to-promises","siteSpaceId":"sitesp_ofA2V","description":"https://www.newline.co/fullstack-react/30-days-of-react/day-15/"},{"id":"-MLozP2yiUAqKvPIu_tp","title":"jQuery off() Method (ok)","pathname":"/javascript/jquery-off-method-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.w3schools.com/jquery/event_off.asp"},{"id":"bqT49F892sVZ5gVx1vrQ","title":"How to make HTTP requests with Axios","pathname":"/javascript/how-to-make-http-requests-with-axios","siteSpaceId":"sitesp_ofA2V","description":"https://blog.logrocket.com/how-to-make-http-requests-like-a-pro-with-axios/"},{"id":"-MLuZZqlcdswxR0D5U2F","title":"Axios vs Fetch - 2020 nên sử dụng thằng nào với những tính năng mới trong javascript","pathname":"/javascript/axios-vs-fetch-2020-nen-su-dung-thang-nao-voi-nhung-tinh-nang-moi-trong-javascript","siteSpaceId":"sitesp_ofA2V","description":"https://anonystick.com/blog-developer/axios-vs-fetch-2020-nen-su-dung-thang-nao-voi-nhung-tinh-nang-moi-trong-javascript-2020010754182944?fbclid=IwAR0JBJLZwTB-rm0pKnj4h9Z6jCb3QQGKFJhPZjrh-5gb4eLABNy09"},{"id":"-MG-OO5IdnNcBFgDU4js","title":"Get and Post method using Fetch API (ok)","pathname":"/javascript/get-and-post-method-using-fetch-api-ok","siteSpaceId":"sitesp_ofA2V","description":"https://app.gitbook.com/@apirest/s/learnapi/get-and-post-method-using-fetch-api"},{"id":"-MGSrysAvkukl9Aa4LLS","title":"Sử dụng JavaScript Fetch API với Async/Await (ok)","pathname":"/javascript/su-dung-javascript-fetch-api-voi-async-await-ok","siteSpaceId":"sitesp_ofA2V","description":"https://app.gitbook.com/@apirest/s/learnapi/su-dung-javascript-fetch-api-voi-async-await-ok"},{"id":"-MGSs1OeLJyuihZgIlnm","title":"Xử lý lỗi cho fetch trong trường hợp không có kết nối hoặc kết nối lâu (ok)","pathname":"/javascript/xu-ly-loi-cho-fetch-trong-truong-hop-khong-co-ket-noi-hoac-ket-noi-lau-ok","siteSpaceId":"sitesp_ofA2V","description":"https://app.gitbook.com/@apirest/s/learnapi/xu-ly-loi-cho-fetch-trong-truong-hop-khong-co-ket-noi-hoac-ket-noi-lau-ok"},{"id":"-MGSrwxu1zXeLw9dv27e","title":"------------ End Fetch  -----------","pathname":"/javascript/end-fetch","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MM-RHV5Zwsz0UJT2JLp","title":"BigDataCloud Free Reverse Geocoding Javascript API Client (ok)","pathname":"/javascript/bigdatacloud-free-reverse-geocoding-javascript-api-client","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/bigdatacloudapi/js-reverse-geocode-client"},{"id":"NmCAVnwTYdk9qMI5yOwp","title":"Vietmap API","pathname":"/javascript/vietmap-api","siteSpaceId":"sitesp_ofA2V","description":"https://maps.vietmap.vn"},{"id":"bIiTKK70rMuLP47DIhlX","title":"Sử dụng API Giao hàng Nhanh để tính giá cước vận chuyển (ok)","pathname":"/javascript/su-dung-api-giao-hang-nhanh-de-tinh-gia-cuoc-van-chuyen-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f970"},{"id":"-MMOzpEXEvr3hDu_mEay","title":"photonsearch as you type with OpenStreetMap map (ok)","pathname":"/javascript/photonsearch-as-you-type-with-openstreetmap-map-ok","siteSpaceId":"sitesp_ofA2V","description":"https://photon.komoot.io/"},{"id":"-MIIfU7yKcKiZ0OThsZG","title":"Leaflet - Một thư viện JS mã nguồn mở cho việc xây dụng ứng dụng bản đồ map (ok)","pathname":"/javascript/leaflet-mot-thu-vien-js-ma-nguon-mo-cho-viec-xay-dung-ung-dung-ban-do","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/leaflet-mot-thu-vien-js-ma-nguon-mo-cho-viec-xay-dung-ung-dung-ban-do-6J3Zg2jLKmB"},{"id":"-MLpZEQSFX9qNZl7ciTk","title":"Xây dựng popup lấy vị trí map áp dụng pointfinder (ok)","pathname":"/javascript/xay-dung-popup-lay-vi-tri-map-ap-dung-pointfinder-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MLzjPuP-_DPGdo7vgpg","title":"Reverse Geocoding Convert Lat Long to Address map (ok)","pathname":"/javascript/reverse-geocoding-convert-lat-long-to-address-map-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.latlong.net/Show-Latitude-Longitude.html"},{"id":"-MM-PRXPnJiNksZt-Em-","title":"Free Reverse Geocoding Javascript API map (ok)","pathname":"/javascript/free-reverse-geocoding-javascript-api-map-ok","siteSpaceId":"sitesp_ofA2V","description":"https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=20.591254&longitude=105.807970&localityLanguage=vi"},{"id":"-MIvh3Y1CG4ks17PAB_I","title":"[YAML] In Action Tutorial Series - General - Hướng dẫn sử dụng file YML YAML cơ bản","pathname":"/javascript/yaml-in-action-tutorial-series-general-huong-dan-su-dung-file-yml-yaml-co-ban","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/in-action-tutorial-series-general-huong-dan-su-dung-file-yml-yaml-co-ban-Az45bNbw5xY"},{"id":"-MDkGqVsJVFmpe-cZ1eH","title":"----------------- Start Notification -----------------","pathname":"/javascript/start-notification","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MDkUdMn_RUgBbf6wfoo","title":"Đối tượng caches object caches (ok)","pathname":"/javascript/doi-tuong-caches-object-caches-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MDkGzaAWgvBc9UP-4Dn","title":"Notification (ok)","pathname":"/javascript/notification-ok","siteSpaceId":"sitesp_ofA2V","description":"https://developer.mozilla.org/en-US/docs/Web/API/Notification"},{"id":"-MDkMH7q2eWcQ0PzsOVc","title":"Sử dụng  indexedDB (ok)","pathname":"/javascript/su-dung-indexeddb-ok","siteSpaceId":"sitesp_ofA2V","description":"https://mdn.github.io/to-do-notifications/"},{"id":"-MDk9Ki9ol9cG8t3KdpI","title":"Using the Notifications API (ok)","pathname":"/javascript/using-the-notifications-api-ok","siteSpaceId":"sitesp_ofA2V","description":"https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API/Using_the_Notifications_API"},{"id":"-MDkHKZBbF-Z06_Ks9Ze","title":"NotificationEvent  (chưa có ví dụ :((","pathname":"/javascript/notificationevent-ok","siteSpaceId":"sitesp_ofA2V","description":"https://developer.mozilla.org/en-US/docs/Web/API/NotificationEvent"},{"id":"-MDkNZJCgikXkje1Ndgu","title":"ServiceWorkerGlobalScope.onnotificationclick (ok)","pathname":"/javascript/serviceworkerglobalscope.onnotificationclick-ok","siteSpaceId":"sitesp_ofA2V","description":"https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/onnotificationclick"},{"id":"-MDkONRBivGPUV_10tqR","title":"ServiceWorkerRegistration.getNotifications(ok)","pathname":"/javascript/serviceworkerregistration.getnotifications-ok","siteSpaceId":"sitesp_ofA2V","description":"https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/getNotifications"},{"id":"-MDkP5VilsbchDdYqyS1","title":"ServiceWorkerRegistration.showNotification(ok)","pathname":"/javascript/serviceworkerregistration.shownotification-ok","siteSpaceId":"sitesp_ofA2V","description":"https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification"},{"id":"-MDlv3lT4R724DlTL4KF","title":"Giao tiếp giữa các cửa sổ với Window.postMessage API (ok)","pathname":"/javascript/giao-tiep-giua-cac-cua-so-voi-window.postmessage-api","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/giao-tiep-giua-cac-cua-so-voi-windowpostmessage-api-V3m5WaAQZO7"},{"id":"-MDm3ffozqPWOCVY33xw","title":"Window open() Method (ok)","pathname":"/javascript/window-open-method-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.w3schools.com/jsref/met_win_open.asp"},{"id":"-MDkGwhvHCGQiIWWQ8C4","title":"----------------- End Notification -----------------","pathname":"/javascript/end-notification","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LYjMnlTSaTwkf8YiOFP","title":"Example Cookie full  (ok)","pathname":"/javascript/cookie-full","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LZaST72SXYj5AMBouvD","title":"Thay đổi class active javascript bằng cách viết hàm (P1)","pathname":"/javascript/thay-doi-class-active-javascript-bang-cach-viet-ham","siteSpaceId":"sitesp_ofA2V","description":"Theme Newspaper"},{"id":"-LZbfdjjL2f-gl0NJptk","title":"Thay đổi class active javascript bằng cách viết hàm (P2)","pathname":"/javascript/thay-doi-class-active-javascript-bang-cach-viet-ham-1","siteSpaceId":"sitesp_ofA2V","description":"Bắt ký tự \"#\""},{"id":"-M9quk-UVawYL_HkONQq","title":"jQuery Mockjax Plugin (chưa học cách sử dụng)","pathname":"/javascript/jquery-mockjax-plugin","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/jakerella/jquery-mockjax/"},{"id":"-M9qv-kYRKkujb2MnnCU","title":"jQuery Ajax X-editable bootstrap plugin (chưa học cách sử dụng)","pathname":"/javascript/jquery-ajax-x-editable-bootstrap-plugin-chua-hoc-cach-su-dung","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/gioi-thieu-jquery-ajax-x-editable-bootstrap-plugin-ByEZkg24ZQ0"},{"id":"-L_w1KeZEqPtW6N5a1m0","title":"Lọc theo điều kiện (filter) (ok)","pathname":"/javascript/loc-theo-dieu-kien-filter","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LbK24xWAa8hfA89fsig","title":"Các ví dụ về filter","pathname":"/javascript/cac-vi-du-ve-filter","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M9q_GOi3mIacOf9L9on","title":"jQuery | grep() Method (ok)","pathname":"/javascript/jquery-or-grep-method-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.geeksforgeeks.org/jquery-grep-method/"},{"id":"-LbOrQ_7pifzgTh2MLhh","title":"Hai bài toán so sánh kinh điển trong javascript","pathname":"/javascript/hai-bai-toan-so-sanh-kinh-dien-trong-javascript","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LbZhWWhIyoZXPRqhl4X","title":"Function random :)","pathname":"/javascript/function-random","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LdPaBVOojQqkiFKCGhi","title":"Một cách sử dụng tab trong theme newspaper","pathname":"/javascript/mot-cach-su-dung-tab-trong-theme-newspaper","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-Lf8qQ_pb1VwFPlU6Sv8","title":"Hiệu ứng scroll + animation + menu trượt mượt","pathname":"/javascript/hieu-ung-scroll-+-animation-+-menu-truot-muot","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"Ou6XW4KVAHMQeuyJmmfC","title":"Trigger a CSS animation on scroll xuongkhopbacninh.vn (ok)","pathname":"/javascript/trigger-a-css-animation-on-scroll-xuongkhopbacninh.vn-ok","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/benoitboucart/pen/zYqrqW"},{"id":"-LfqoOQd47_d8A3RjMZy","title":"App Css Loaded (scroll create link) (ok)","pathname":"/javascript/app-css-loaded","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LfrVKy3D0YR7ivm6xzi","title":"Hiệu tứng scroll cực chất (ok)","pathname":"/javascript/hieu-tung-scroll-cuc-chat","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LfreoxDnD5D5dq1ZBRZ","title":"App Js Loaded (ok)","pathname":"/javascript/app-js-loaded","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LfsV6LM4USdAXl9EDjc","title":"Sử dụng async và defer full (Oke)","pathname":"/javascript/mot-vi-du-ve-cach-su-dung-async-tren-w3school","siteSpaceId":"sitesp_ofA2V","description":"https://www.w3schools.com/tags/att_script_async.asp"},{"id":"-LgHJa5OyPzjukduxCY0","title":"Cách sử dụng Thuộc tính async và defer trong JavaScript hay","pathname":"/javascript/cach-su-dung-thuoc-tinh-async-va-defer-trong-javascript-hay","siteSpaceId":"sitesp_ofA2V","description":"https://hocwp.net/guide/thuoc-tinh-async-va-defer-trong-javascript"},{"id":"-LgifCGpY552oCfC39UG","title":"ReferenceError: Can't find variable: requestAnimationFrame","pathname":"/javascript/referenceerror-cant-find-variable-requestanimationframe","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LgifRLv2G9XdIJoIhJA","title":"Đoạn code check lỗi PHP trong Ajax","pathname":"/javascript/doan-code-check-loi-php-trong-ajax","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LglYDgmBZachhJ08tOl","title":"[SELECT2] Sử dụng Select2 để thay thế select boxes","pathname":"/javascript/su-dung-select2-de-thay-the-select-boxes","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/su-dung-select2-de-thay-the-select-boxes-3OEqGjlpR9bL"},{"id":"-LhK3F54BbW9zDO7JpDa","title":"Một cách sử dụng lazyload khi addclass thật khó khăn...","pathname":"/javascript/mot-cach-su-dung-lazyload-khi-addclass-that-kho-khan...","siteSpaceId":"sitesp_ofA2V","description":"Đôi khi việc sử dụng việc addclass vào một thẻ thật là khó khăn ..."},{"id":"-LiDkfxezZWI1STUFms9","title":"Hiệu ứng croll chuột và % cực đẹp :_","pathname":"/javascript/hieu-ung-croll-chuot-va-cuc-dep-_","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LjfVK50_ktrqqyFQXNK","title":"Tạo chức năng tự động hoàn tất nhập liệu với thư viện jQuery UI Autocomplete (Phần 1)","pathname":"/javascript/tao-chuc-nang-tu-dong-hoan-tat-nhap-lieu-voi-thu-vien-jquery-ui-autocomplete","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M9mbErFQezGAi5HQZVb","title":"Tạo chức năng tự động hoàn tất nhập liệu với thư viện jQuery UI Autocomplete (Phần 2)","pathname":"/javascript/tao-chuc-nang-tu-dong-hoan-tat-nhap-lieu-voi-thu-vien-jquery-ui-autocomplete-phan-2","siteSpaceId":"sitesp_ofA2V","description":"https://api.jqueryui.com/autocomplete/"},{"id":"-M9w7VukL2HmgtbZib0m","title":"JavaScript String split() Method (OK)","pathname":"/javascript/javascript-string-split-method-ok","siteSpaceId":"sitesp_ofA2V","description":"https://www.w3schools.com/jsref/jsref_split.asp"},{"id":"-Ll1OLa0nWASPWSBF3rT","title":"Sử dụng thư viện displace để làm menu kéo thả (ok):)))","pathname":"/javascript/su-dung-thu-vien-displace-de-lam-menu-keo-tha","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/catc/displace"},{"id":"iF09ZZNqB93fgSRP2g01","title":"Menu cực chất :)))","pathname":"/javascript/menu-cuc-chat","siteSpaceId":"sitesp_ofA2V","description":"https://app.gitbook.com/o/-L_qP1P_raQ3RdMoh5NE/s/-L_qP1PdHAy7-XP3i1ZW/menu-cuc-chat-1/menu-cuc-chat"},{"id":"-LlUiVdjMryuofLxZuDN","title":"Sử dụng thư viện slick (ok)","pathname":"/javascript/su-dung-thu-vien-slick-ok","siteSpaceId":"sitesp_ofA2V","description":"https://kenwheeler.github.io/slick/"},{"id":"-MQY2VRnU73XpCxaV7y9","title":"vertical scroll, Vertical carousel (ok)","pathname":"/javascript/slick-js-vertical-scroll-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LlhGwRbXJVsqQ-no9hY","title":"Google-like Thanos disintegration (ok)","pathname":"/javascript/google-like-thanos-disintegration-ok","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/birjolaxew/pen/QPYOxb"},{"id":"-LlhcNlD4Ut5--IiDBCp","title":"Dùng thư viện jspdf","pathname":"/javascript/untitled","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LlhepNVYLW585Z8YpcL","title":"Công thức Toán học cho website","pathname":"/javascript/cong-thuc-toan-hoc-cho-website","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/mathjax/mathjax hoặc https://www.mathjax.org"},{"id":"-Lmcu-mOghSRnNDtS-ZQ","title":"Fix lỗi tự động làm thay đổi độ cao :( vieclam123.vn :(","pathname":"/javascript/fix-loi-tu-dong-lam-thay-doi-do-cao-vieclam123.vn","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LmsMgMSjvMmvHSn8pH2","title":"Sử dụng window.addEventListener để resize và responsive <3","pathname":"/javascript/su-dung-window.addeventlistener-de-resize-va-responsive-less-than-3","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LnH0IBYWn70GzoUg44F","title":"Javascript create, read, and delete cookies (ok)","pathname":"/javascript/javascript-create-read-and-delete-cookies","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LnR_j_HLiFNO3uI5LNr","title":"Tự động submit bằng javscript :))) (ok)","pathname":"/javascript/tu-dong-submit-bang-javscript","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LnRa4zNIRhwfycMtQ1V","title":"avoid form warning if user clicks refresh (ok)","pathname":"/javascript/avoid-form-warning-if-user-clicks-refresh-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LnRvFuaITNcsQUC8nP_","title":"Một cách truy cập phần tử bằng js thông qua id lạ :)))","pathname":"/javascript/mot-cach-truy-cap-phan-tu-bang-js-thong-qua-id-la","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LnTdC7wbg1SKvIeG-su","title":"Meta Refresh","pathname":"/javascript/meta-refresh","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LnR_IstS_eTK8tnvurL","title":"Sử dụng form để truyền sang php (ok)","pathname":"/javascript/truyen-du-lieu-tu-javascript-sang-php/su-dung-form-de-truyen-sang-php-ok","siteSpaceId":"sitesp_ofA2V","description":"","breadcrumbs":[{"label":"Truyền dữ liệu từ javascript sang php"}]},{"id":"-LnR_gksGwKBOJFQyE9m","title":"Truyền giá trị theo file bằng đường dẫn (ok)","pathname":"/javascript/truyen-du-lieu-tu-javascript-sang-php/tu","siteSpaceId":"sitesp_ofA2V","description":"","breadcrumbs":[{"label":"Truyền dữ liệu từ javascript sang php"}]},{"id":"-LnRrLn6fEyFbA-BMw4H","title":"Dùng json để truyền sang php","pathname":"/javascript/truyen-du-lieu-tu-javascript-sang-php/dung-json-de-truyen-sang-php","siteSpaceId":"sitesp_ofA2V","description":"","breadcrumbs":[{"label":"Truyền dữ liệu từ javascript sang php"}]},{"id":"-LnTqCOU_z6rqZ2zX_y_","title":"auto-refresh page once only after first load – Using JavaScript / JQuery (ok)","pathname":"/javascript/auto-refresh-page-once-only-after-first-load-using-javascript-jquery/auto-refresh-page-once-only-after-first-load-using-javascript-jquery","siteSpaceId":"sitesp_ofA2V","description":"https://stackfame.com/auto-refresh-page-first-load-javascript-jquery","breadcrumbs":[{"label":"auto-refresh page once only after first load – Using JavaScript / JQuery"}]},{"id":"-LojxCfd12SPLlUJ5BKW","title":"Sticky Scroller phần 1 (ok)","pathname":"/javascript/sticky-scroller/sticky-scroller","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/guoyunhe/sticky-scroller","breadcrumbs":[{"label":"Sticky Scroller"}]},{"id":"9jSetXKWphWvj0OTteM4","title":"Sticky Scroller phần 2 (ok)","pathname":"/javascript/sticky-scroller/sticky-scroller-phan-2-ok","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/WeCodePixels/theia-sticky-sidebar","breadcrumbs":[{"label":"Sticky Scroller"}]},{"id":"-LsUdBeDujHZK65fw1w_","title":"owl carousel with dotsContainer (Dots + Text) (ok)","pathname":"/javascript/sticky-scroller/owl-carousel-with-dotscontainer-dots-+-text","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/vbeetlejuice/pen/dRaero","breadcrumbs":[{"label":"Sticky Scroller"}]},{"id":"-MAxgK71nkBAVqvDhWUa","title":"Owl Carousel 2 Thumbnails plugin (ok)","pathname":"/javascript/sticky-scroller/owl-carousel-2-thumbnails-plugin-ok","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/gijsroge/OwlCarousel2-Thumbs","breadcrumbs":[{"label":"Sticky Scroller"}]},{"id":"-Lt1UBt3hlqW6Y7eIJoU","title":"easy_background Background Slideshow (ok) dev.vieclam123.vn","pathname":"/javascript/basic-background-slideshow-in-javascript-easy_background-0k-lam-tren-dev.vieclam123.vn","siteSpaceId":"sitesp_ofA2V","description":"https://www.cssscript.com/basic-background-slideshow-javascript-easy_background/"},{"id":"-MLqQLdGhQnZyTAJeVYR","title":"scroll cực chất timviec365.vn, vieclam123.vn (ok)","pathname":"/javascript/scroll-cuc-chat-timviec365.vn-vieclam123.vn-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-Lt5imMUTIItQH2BT-Sb","title":"Thư viện lightslider-master gần giống với Owl Carousel","pathname":"/javascript/thu-vien-lightslider-master-gan-giong-voi-owl-carousel","siteSpaceId":"sitesp_ofA2V","description":"http://sachinchoolur.github.io/lightslider/"},{"id":"-Lt5kMgjndUsY1gcGWgL","title":"Thư viện lightGallery để làm những bộ Sưu tập Gallery","pathname":"/javascript/thu-vien-lightgallery-de-lam-nhung-bo-suu-tap-gallery","siteSpaceId":"sitesp_ofA2V","description":"http://sachinchoolur.github.io/lightslider/"},{"id":"-Lt5n5ZNI2-UrErH2Yu0","title":"Tự viết  click slide (ok)","pathname":"/javascript/thu-vien-simple-jquery-infinite-carousel-plugin-lbslider","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LtQlrILVGpDI64cg2Bq","title":"Draggable & Touch-friendly Slider Carousel In Pure JS (ok)","pathname":"/javascript/draggable-and-touch-friendly-slider-carousel-in-pure-js","siteSpaceId":"sitesp_ofA2V","description":"https://www.cssscript.com/draggable-touch-slider-carousel/"},{"id":"-LtSQIVZrADraOqt9KXr","title":"Slider owl được viết dưới dạng Thumnail (0k)","pathname":"/javascript/slider-owl-duoc-viet-duoi-dang-thumnail-0k","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/pankajthakur/pen/yVrXxj"},{"id":"-LtVaOXbxjby-vcYTvAW","title":"jquery.js:5092 [Violation] Added non-passive event listener to a scroll-blocking 'touchstart' (ok)","pathname":"/javascript/jquery.js-5092-violation-added-non-passive-event-listener-to-a-scroll-blocking-touchstart-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/46094912/added-non-passive-event-listener-to-a-scroll-blocking-touchstart-event"},{"id":"-LtVb9Dde3PhEuxgbgNv","title":"Added non-passive event listener to a scroll-blocking 'touchstart' event (ok)","pathname":"/javascript/added-non-passive-event-listener-to-a-scroll-blocking-touchstart-event-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/46094912/added-non-passive-event-listener-to-a-scroll-blocking-touchstart-event"},{"id":"-LtopbiRK8qlgWJYgqeJ","title":"sticky-mobile-menu-burger-menu (ok)","pathname":"/javascript/sticky-mobile-menu-burger-menu-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LuZ0Xzqsmgra4_dLn3k","title":"How can I add class to the first and last item among the visible items of Owl Carousel 2? (ok)","pathname":"/javascript/how-can-i-add-class-to-the-first-and-last-item-among-the-visible-items-of-owl-carousel-2-ok","siteSpaceId":"sitesp_ofA2V","description":"dev.vieclam123.vn Toic"},{"id":"-LuZNy5ZPl0Ty-Vw8ejK","title":"Owl-carousel2 DEMO - items in 2 rows (oke)","pathname":"/javascript/owl-carousel2-demo-items-in-2-rows-oke","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/dukecroc/pen/gzMrjx"},{"id":"-LuZk1lpHIhswBLGVyFu","title":"How can I create a carousel slick with multiple rows? (ok)","pathname":"/javascript/how-can-i-create-a-carousel-slick-with-multiple-rows-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/22545466/how-can-i-create-a-carousel-with-multiple-rows"},{"id":"-Lu_E-b3P1vr-sRxv0xT","title":"Một cách sử dụng create <style> để thêm style (ok)","pathname":"/javascript/mot-cach-su-dung-create-less-than-style-greater-than-de-them-style-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LucuF1-ivrxyYY9EBF-","title":"Two Rows Olw Carousel (ok) vieclam123.vn","pathname":"/javascript/two-rows-olw-carousel-ok-vieclam123.vn","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LujvFnnO-CUBiN4jSJr","title":"Chức năng tự gọi Javascript (ok) tự động auto","pathname":"/javascript/chuc-nang-tu-goi-javascript-ok-tu-dong","siteSpaceId":"sitesp_ofA2V","description":"https://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/"},{"id":"-Lv1tfNqXeXXa8ueYg0_","title":"Click Next Javascript Base (ok)","pathname":"/javascript/click-next-javascript-base-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-Lv8w3m_MX5JVfKwIJ2f","title":"Slider owl được viết dưới dạng Thumnail viết trên  jsfiddle (0k)","pathname":"/javascript/slider-owl-duoc-viet-duoi-dang-thumnail-viet-tren-jsfiddle-0k","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LvAGUB3OIQvt9owOZ_Q","title":"Creating a Countdown Timer, dakhoathienhoa.com.vn (oK)","pathname":"/javascript/creating-a-countdown-timer-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f606","description":""},{"id":"NTJwCrl7vVQ8CuwZNWSr","title":"NumScroller, Counter From Zero To Value - Javascript Animation (ok)","pathname":"/javascript/numscroller-counter-from-zero-to-value-javascript-animation-ok","siteSpaceId":"sitesp_ofA2V","emoji":"1f978","description":"https://codepen.io/shivasurya/pen/yyBoJX"},{"id":"-LvPoqNoXAQE7_aPgSNR","title":"Click Button background-hover white (ok)","pathname":"/javascript/click-button-background-hover-white-ok","siteSpaceId":"sitesp_ofA2V","description":"https://codepen.io/Ruddy/pen/09052b957d82a17bd6ca70ac6663dd6a"},{"id":"-LwDBOp8iIisrVO8xH0w","title":"CodePen HomeLazy Loading Images (Ok)","pathname":"/javascript/codepen-homelazy-loading-images-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LwSY3Tla_oCGlkpSHG2","title":"Custom Date Javasript (job247.vn)","pathname":"/javascript/custom-date-javasript-job247.vn","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LwXpIToqNxRcqKJug9m","title":"Tooltip","pathname":"/javascript/tooltip","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LwycwJaJvJGeb8Xqs-e","title":"button thay đổi thẻ tags button và span trong Owl Carousel thành thẻ khác :)) (ok)","pathname":"/javascript/button-thay-doi-the-tags-button-va-span-trong-owl-carousel-thanh-the-khac-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LwyfCsaKt-SDliOvQHo","title":"Thêm class vào navigation Owl Carousel (ok)","pathname":"/javascript/them-class-vao-navigation-owl-carousel-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-Lx4RVrjVPns4R08GoUK","title":"Click lần đầu sử event.preventDefault(); lầu sau not event.preventDefault();","pathname":"/javascript/click-lan-dau-su-event.preventdefault-lau-sau-not-event.preventdefault","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LxKzUjH_FfY4JfeT4Z6","title":"landscape && landscape (ok)","pathname":"/javascript/landscape-and-and-landscape-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LxL-QZHFZCbueaNjSOu","title":"Landscape && Portrait (ok) job247.vn","pathname":"/javascript/landscape-and-and-portrait-ok-vieclam123.vn","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/14019939/window-orientation-returns-different-values-in-ios-and-android"},{"id":"-LxiDfMOAXBXat4U4qJc","title":"Hammer thư viện JavaScript chạm cho màn hình cảm ứng","pathname":"/javascript/hammer-thu-vien-javascript-cham-cho-man-hinh-cam-ung","siteSpaceId":"sitesp_ofA2V","description":"https://expressmagazine.net/development/1871/hammer-thu-vien-javascript-cham-cho-man-hinh-cam-ung"},{"id":"-Lyp7g4WzFJQsMpXP2n4","title":"jQuery Plugin To Add CSS3 Scrolling Effects On Your Web Page - Smoove menu (ok)","pathname":"/javascript/jquery-plugin-to-add-css3-scrolling-effects-on-your-web-page-smoove-menu-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LypA0sO7gs_fCWR-QKz","title":"Auto Expanding Table Of Contents Plugin - Dynamic Content menu (ok)","pathname":"/javascript/auto-expanding-table-of-contents-plugin-dynamic-content-menu","siteSpaceId":"sitesp_ofA2V","emoji":"1f603","description":""},{"id":"-LypE7S82e98IIVZsS5S","title":"Tornis - watch and respond","pathname":"/javascript/tornis-watch-and-respond","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LypEfa-LRoN_beIHVXm","title":"scroll-manager","pathname":"/javascript/scroll-manager","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-LypF3HkiH8GlK9YHcEt","title":"Xem thêm","pathname":"/javascript/xem-them","siteSpaceId":"sitesp_ofA2V","description":"https://www.bestjquery.com/demo/jquery-animate-scroll-effects/"},{"id":"-Lyt6vgT0mEsFQXSxDcX","title":"Hướng dẫn nấu món \"Lazy loading image\" theo chuẩn 5 sao Google","pathname":"/javascript/huong-dan-nau-mon-lazy-loading-image-theo-chuan-5-sao-google","siteSpaceId":"sitesp_ofA2V","description":"https://viblo.asia/p/huong-dan-nau-mon-lazy-loading-image-theo-chuan-5-sao-google-maGK7qJMlj2?fbclid=IwAR1iMSW2bbw1DvAPZeLc3bxZbtwSnX3Yv3HnQWavMH6x665nLFV4df4_FHA"},{"id":"-M-OshXU0Hckc77dsk-_","title":"jQuery Message Box Plugin Demo Page","pathname":"/javascript/welcome-to-jquery-confirm/jquery-message-box-plugin-demo-page","siteSpaceId":"sitesp_ofA2V","description":"A jQuery Plugin to replace Javascript's window.alert(), window.confirm() and window.prompt()","breadcrumbs":[{"label":"Welcome to jquery-confirm!"}]},{"id":"-M2Ciy4Xnrbblx0oTSLS","title":"Magnific-Popup  Popup img","pathname":"/javascript/magnific-popup-popup-img","siteSpaceId":"sitesp_ofA2V","description":"https://github.com/dimsemenov/Magnific-Popup"},{"id":"-M2DHAjuBV0EHiUTuxDl","title":"Slider Swiper Slider-Swiper dùng viết slider giống app","pathname":"/javascript/slider-swiper-slider-swiper-dung-viet-slider-giong-app","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M2DHf4SWkzGR6yuS6TW","title":"Magnific Popup Documentation","pathname":"/javascript/magnific-popup-documentation","siteSpaceId":"sitesp_ofA2V","description":"https://dimsemenov.com/plugins/magnific-popup/"},{"id":"-M2SjRU8Bt34TUjZOXBL","title":"filter search (ok)","pathname":"/javascript/filter-search-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M2Yfm7cFgJtNEwfNr0v","title":"Is it possible to convert a select menu to buttons? (ok)","pathname":"/javascript/is-it-possible-to-convert-a-select-menu-to-buttons-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/18931628/is-it-possible-to-convert-a-select-menu-to-buttons"},{"id":"-M2alUCXqOpVFDjeIvEr","title":"Changing selected option on button click  select (ok) homef.vn hoặc inop.vyanh.net","pathname":"/javascript/changing-selected-option-on-button-click-ok","siteSpaceId":"sitesp_ofA2V","description":"https://stackoverflow.com/questions/12703918/changing-selected-option-on-button-click"},{"id":"-M5WKHGF3lHEI-hRuwpA","title":"scrooll animation (job247.vn) (ok)","pathname":"/javascript/scrooll-animation-job247.vn","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M7g9u2kxTcPopjAvUc-","title":"Single select boxes (ok)","pathname":"/javascript/select2-tutorial/untitled","siteSpaceId":"sitesp_ofA2V","description":"","breadcrumbs":[{"label":"Select2 tutorial"}]},{"id":"-M7gBrdsYtszcXRmhw0K","title":"[SELECT2] Disabling a Select2 control (ok)","pathname":"/javascript/disabling-a-select2-control-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M7gDLwspm-krkK6G_64","title":"Disabling options (ok)","pathname":"/javascript/disabling-options-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M7gFbCUe4n5heSawm94","title":"placeholder (ok)","pathname":"/javascript/placeholder-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M7gG03FajHNmUQSd5pO","title":"Hiển thị nút xóa các giá trị đã chọn + allowClear (ok)","pathname":"/javascript/hien-thi-nut-xoa-cac-gia-tri-da-chon-+-allowclear-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M7gGFS76LQT4OPPREUm","title":"Đọc dữ liệu từ một mảng, Data sources (ok)","pathname":"/javascript/doc-du-lieu-tu-mot-mang-ok","siteSpaceId":"sitesp_ofA2V","description":"https://select2.org/data-sources"},{"id":"-M7l7a25tAjKBUClYUln","title":"Sử dụng database + php (ok)","pathname":"/javascript/su-dung-database-+-php-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M7q4RmperkGS2lK_Qce","title":"[SELECT2] Sử dụng form + select2 + ajax + get value (ok)","pathname":"/javascript/su-dung-form-+-select2-+-ajax-+-get-value-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M7gH0jrA9x87X1I7ycR","title":"Đọc dữ liệu từ nguồn khác sử dụng AJAX (ok)","pathname":"/javascript/doc-du-lieu-tu-nguon-khac-su-dung-ajax-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M7gHhsivVcQWs5s5fT8","title":"Thiết lập giá trị mặc định ban đầu trên HTML như bình thường (ok)","pathname":"/javascript/thiet-lap-gia-tri-mac-dinh-ban-dau-tren-html-nhu-binh-thuong-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-M7gIUvLUBC7N2fqbT3w","title":"Sử dụng Ajax để tải dữ liệu từ một nguồn khác (ok)","pathname":"/javascript/su-dung-ajax-de-tai-du-lieu-tu-mot-nguon-khac-ok","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"-MXu_IF3jXm70jM6CaP0","title":"change form","pathname":"/javascript/change-form","siteSpaceId":"sitesp_ofA2V","description":""},{"id":"HUcQ7qQ3hJ9UvCZIUCM8","title":"Attribute Starts With Selector [name^=\"value\"] (ok)","pathname":"/javascript/advanced","siteSpaceId":"sitesp_xQRWC","emoji":"1f606","description":"https://api.jquery.com/attribute-starts-with-selector/"},{"id":"FK0s8vP6wOK6Tb0mGGjz","title":"Ghi đè data-settings của Swiper, slide bằng JavaScript trong WordPress","pathname":"/javascript/advanced/ghi-de-data-settings-cua-swiper-slide-bang-javascript-trong-wordpress","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://clinic-hochiminh.oceaniaspa.vn/ladi/prp/"},{"id":"hrYgRQ52DqYJ2c4ob0Ex","title":"video trong thẻ <video> tự phát bằng JavaScript (ok)","pathname":"/javascript/advanced/video-trong-the-less-than-video-greater-than-tu-phat-bang-javascript-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f600"},{"id":"rngRlyJaM2GE6JCqDo3q","title":"🤗 Click → Scroll Back to a Specific Element (Anchor Link), click back to element in elementor (ok)","pathname":"/javascript/advanced/click-scroll-back-to-a-specific-element-anchor-link-click-back-to-element-in-elementor-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f601"},{"id":"zTLac75WrAU4M4MfcTgm","title":"Adding a country code picker to a phone number input field enhances (ok)","pathname":"/javascript/advanced/adding-a-country-code-picker-to-a-phone-number-input-field-enhances-ok","siteSpaceId":"sitesp_xQRWC"},{"id":"YDQDOERBQWBNDngy2ppD","title":"🥹 Tìm hiểu về Map và Set trong javascript (ok)","pathname":"/javascript/advanced/tim-hieu-ve-map-va-set-trong-javascript-ok","siteSpaceId":"sitesp_xQRWC","description":"🥹 Tìm hiểu về Map và Set trong javascript (ok) https://viblo.asia/p/tim-hieu-ve-map-va-set-trong-javascript-aWj53LaQK6m  Bản đồ trong JS Map là một cấu trúc dữ liệu lưu trữ các cặp khóa-giá trị, tron"},{"id":"eEx18FGxyxk2tbENGUyL","title":"🫢 The Array.from() method returns an array from any iterable object. (ok)","pathname":"/javascript/advanced/the-array.from-method-returns-an-array-from-any-iterable-object.-ok","siteSpaceId":"sitesp_xQRWC"},{"id":"SHUMCeIb7O61Tb9Ri9sP","title":"localeCompare() method compares two strings return sort order -1, 1,0 (for before, after, or equal)","pathname":"/javascript/advanced/localecompare-method-compares-two-strings-return-sort-order-1-1-0-for-before-after-or-equal","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://www.w3schools.com/Jsref/jsref_localecompare.asp"},{"id":"UlLGfrepVG57yqTHmJyP","title":"JavaScript Array some() method returns true (and stops) if the function returns true() (ok)","pathname":"/javascript/advanced/javascript-array-some-method-returns-true-and-stops-if-the-function-returns-true-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://www.w3schools.com/jsref/jsref_some.asp"},{"id":"K0JMB8xSG3Kgq7ykYFtn","title":"Add key value pair to all objects in array (ok)","pathname":"/javascript/advanced/add-key-value-pair-to-all-objects-in-array-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/39827087/add-key-value-pair-to-all-objects-in-array"},{"id":"1QbffaWINecQOibo2iS9","title":"Làm một sider tuyệt đẹp \"Timed-Cards-Opening\"","pathname":"/javascript/advanced/lam-mot-sider-tuyet-dep-timed-cards-opening","siteSpaceId":"sitesp_xQRWC","emoji":"1f978"},{"id":"NG7bXhOs8ryjxScDVXLo","title":"Scroll animations! How to add a flowing path like the Lusion site with SVG and Javascript (ok)","pathname":"/javascript/advanced/scroll-animations-how-to-add-a-flowing-path-like-the-lusion-site-with-svg-and-javascript-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f978","description":"https://www.youtube.com/watch?v=w8DOo_ICJds"},{"id":"HZ9lrvIhRm1a6Yim9xaN","title":"Chia sẽ code plugin tạo thời gian chờ tải cho nút download","pathname":"/javascript/advanced/chia-se-code-plugin-tao-thoi-gian-cho-tai-cho-nut-download","siteSpaceId":"sitesp_xQRWC","description":"https://webantam.com/code-tao-thoi-gian-cho-tai-cho-nut-download"},{"id":"Qsi6tE8L7QoA3dOSDoX5","title":"jQuery 1.9 .live,.delegate,.on  is not a function (ok)","pathname":"/javascript/advanced/jquery-1.9-.live-.delegate-.on-is-not-a-function-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f61b"},{"id":"FNeMuYC8Corp9yVwY0pk","title":"Importing CSS Breakpoints Into JavaScript (ok)","pathname":"/javascript/advanced/importing-css-breakpoints-into-javascript-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f601","description":"https://www.lullabot.com/articles/importing-css-breakpoints-into-javascript"},{"id":"adq2vimlnpn7DmSAKzPR","title":"The matchMedia() method returns a MediaQueryList with the results from the query. (ok)","pathname":"/javascript/advanced/the-matchmedia-method-returns-a-mediaquerylist-with-the-results-from-the-query.-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.w3schools.com/jsref/met_win_matchmedia.asp"},{"id":"posRsGtsHdbt6Xi1uJes","title":"Collect nhiều sách pdf (ok)","pathname":"/javascript/advanced/collect-nhieu-sach-pdf-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/ngocduong6697/ebook-programming"},{"id":"NyKWOz7qJcwfdwO1hBoC","title":"Check device Agent chrome, firefox ... (ok)","pathname":"/javascript/advanced/check-device-agent-chrome-firefox-...-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f601","description":""},{"id":"rKEeKHDotuRT8ACCAjsc","title":"=== START Three.js and TypeScript ===","pathname":"/javascript/advanced/start-three.js-and-typescript","siteSpaceId":"sitesp_xQRWC"},{"id":"TvDaXEzL5pIbKDhsTIG4","title":"Setup Development Environment (ok)","pathname":"/javascript/advanced/setup-development-environment-ok","siteSpaceId":"sitesp_xQRWC","description":"https://sbcode.net/threejs/webpack-dev-server/"},{"id":"6cWDQptZqHKLy89XKHLG","title":"=== END Three.js and TypeScript ===","pathname":"/javascript/advanced/end-three.js-and-typescript","siteSpaceId":"sitesp_xQRWC"},{"id":"GMGVOzKZi4hg4DXbhMNM","title":"=== START THREE.JS ===","pathname":"/javascript/advanced/start-three.js","siteSpaceId":"sitesp_xQRWC"},{"id":"CdA4kRvPz4HGUHGgpMt6","title":"Fundamentals - three.js manual","pathname":"/javascript/advanced/fundamentals-three.js-manual","siteSpaceId":"sitesp_xQRWC","emoji":"1f973","description":""},{"id":"is1iE8LEFtL4oUDuIt76","title":"Light trong Three.js","pathname":"/javascript/advanced/fundamentals-three.js-manual/light-trong-three.js","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/light-trong-threejs-jvElaRLm5kw","breadcrumbs":[{"label":"Fundamentals - three.js manual","emoji":"1f973"}]},{"id":"5KVVpliDaZZwoMXdM5CU","title":"== Start Nguyên tắc cơ bản ===","pathname":"/javascript/advanced/start-nguyen-tac-co-ban","siteSpaceId":"sitesp_xQRWC"},{"id":"ctSoRLDipr0eELMcvpvw","title":"Nguyên tắc cơ bản","pathname":"/javascript/advanced/nguyen-tac-co-ban","siteSpaceId":"sitesp_xQRWC","description":"https://threejs.org/manual/#en/fundamentals"},{"id":"d8fcqOHH3CJJwsTWIog2","title":"Thiết kế đáp ứng","pathname":"/javascript/advanced/thiet-ke-dap-ung","siteSpaceId":"sitesp_xQRWC","description":"https://threejs.org/manual/#en/responsive"},{"id":"AhOAh7iAgsHHyhIym589","title":"nguyên thủy","pathname":"/javascript/advanced/nguyen-thuy","siteSpaceId":"sitesp_xQRWC","description":"https://threejs.org/manual/#en/primitives"},{"id":"JvwM76ejS0LAUdRO4tO9","title":"Điều chỉnh camera (ok)","pathname":"/javascript/advanced/dieu-chinh-camera-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f605","description":"https://threejs.org/manual/#en/scenegraph"},{"id":"7k2r1s1OizGU4NKnXPNL","title":"Điều chỉnh scale","pathname":"/javascript/advanced/dieu-chinh-scale","siteSpaceId":"sitesp_xQRWC","emoji":"1f605","description":"https://threejs.org/manual/#en/scenegraph"},{"id":"vGXilacHlJ0kpBILMkCw","title":"Xử lý màn hình HD-DPI","pathname":"/javascript/advanced/xu-ly-man-hinh-hd-dpi","siteSpaceId":"sitesp_xQRWC","emoji":"1f972"},{"id":"l64VArRmC9EDpGEBjaaC","title":"So sánh Mesh với Object3D","pathname":"/javascript/advanced/so-sanh-mesh-voi-object3d","siteSpaceId":"sitesp_xQRWC","emoji":"1f603","description":"https://threejs.org/manual/#en/scenegraph"},{"id":"oHlSKe536ylygGH9xvjQ","title":"Trục AxesHelper","pathname":"/javascript/advanced/truc-axeshelper","siteSpaceId":"sitesp_xQRWC","emoji":"1f605","description":"https://threejs.org/manual/#en/scenegraph"},{"id":"sf5fviHMtimxJ1Vcwb7I","title":"Tạo GridHelper","pathname":"/javascript/advanced/tao-gridhelper","siteSpaceId":"sitesp_xQRWC","emoji":"1f605","description":"https://threejs.org/manual/#en/scenegraph"},{"id":"W8DkorJtEdxLvBpqLC5Q","title":"MeshBasic, MeshLambert, MeshPhong, MeshToon, MeshStandard, MeshPhysical, Shader, RawShader","pathname":"/javascript/advanced/meshbasic-meshlambert-meshphong-meshtoon-meshstandard-meshphysical-shader-rawshader","siteSpaceId":"sitesp_xQRWC","emoji":"1f606","description":"https://threejs.org/manual/#en/materials"},{"id":"WJOcjLtkYJXCfTZXrQFX","title":"== End Nguyên tắc cơ bản ===","pathname":"/javascript/advanced/end-nguyen-tac-co-ban","siteSpaceId":"sitesp_xQRWC"},{"id":"VkpzThr4KrqppimbK1GX","title":"Bài viết mẫu thự hành tọa độ, quay (ok)","pathname":"/javascript/advanced/bai-viet-mau-thu-hanh-toa-do-quay-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f970"},{"id":"XxxLZqDol9jPtUiaZWCi","title":"Giới thiệu HTML5 Canvas","pathname":"/javascript/advanced/gioi-thieu-html5-canvas","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/gioi-thieu-html5-canvas-PjxMeV6gG4YL"},{"id":"JGnmZdcou0PiVteDNA04","title":"Bài 1: Làm quen với môi trường 3D của ThreeJS","pathname":"/javascript/advanced/bai-1-lam-quen-voi-moi-truong-3d-cua-threejs","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/threejs-bai-1-lam-quen-voi-moi-truong-3d-cua-threejs-vyDZO7ROZwj"},{"id":"OWVoiX1LPyTnDGk6IvGj","title":"Bài 2: Dịch chuyển đối tượng 3D - Controls","pathname":"/javascript/advanced/bai-2-dich-chuyen-doi-tuong-3d-controls","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/threejs-bai-2-dich-chuyen-doi-tuong-3d-controls-4P856n6W5Y3"},{"id":"PQn1G9tZLLT6TGX4E56O","title":"Bài 3: makeup","pathname":"/javascript/advanced/bai-3-makeup","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/threejs-bai-3-makeup-LzD5de9YKjY"},{"id":"L5w8lMVTy3KZ8sFBIySd","title":"Bài 4: Models loader","pathname":"/javascript/advanced/bai-4-models-loader","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/threejs-bai-4-models-loader-djeZ1mqYZWz"},{"id":"KMH4mmUD7WxB9ExRUF2V","title":"Những trang học three.js","pathname":"/javascript/advanced/nhung-trang-hoc-three.js","siteSpaceId":"sitesp_xQRWC","emoji":"1f601"},{"id":"Co1ZhX7PrugR47KQsmPi","title":"Source Code Example","pathname":"/javascript/advanced/source-code-example","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/josdirksen/learning-threejs"},{"id":"MEphqHAhW1wtkpXygQ7z","title":"=== END THREE.JS ===","pathname":"/javascript/advanced/end-three.js","siteSpaceId":"sitesp_xQRWC"},{"id":"PlW6Mnz13seHMTHtmltQ","title":"=== START WebGL  ===","pathname":"/javascript/advanced/start-webgl","siteSpaceId":"sitesp_xQRWC"},{"id":"tKIb81uF9lkeoCt00H2w","title":"Trang học WebGL && Shador","pathname":"/javascript/advanced/trang-hoc-webgl-and-and-shador","siteSpaceId":"sitesp_xQRWC","emoji":"1f607"},{"id":"jQ78G89VxEjqA8dHFf7n","title":"Tìm hiểu về OpenGL ES 2.0","pathname":"/javascript/advanced/tim-hieu-ve-opengl-es-2.0","siteSpaceId":"sitesp_xQRWC","emoji":"1f605","description":"https://viblo.asia/p/tim-hieu-ve-opengl-es-20-ZDEvLYoxGJb"},{"id":"jVavNmJrQpelJdYtMSpv","title":"Tìm hiểu về WebGL phần 1: thư viện đồ họa web.","pathname":"/javascript/advanced/tim-hieu-ve-webgl-phan-1-thu-vien-do-hoa-web.","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-ve-webgl-phan-1-thu-vien-do-hoa-web-PwRkgmyVGEd"},{"id":"9cWQOd0NoeXA00UVe031","title":"Tìm hiểu WebGL Phần 2: Đi sâu vào cách code WebGL appication","pathname":"/javascript/advanced/tim-hieu-webgl-phan-2-di-sau-vao-cach-code-webgl-appication","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-ve-webgl-phan-1-thu-vien-do-hoa-web-PwRkgmyVGEd"},{"id":"p4Jcfj4VJ3biwRp9IOFT","title":"Tìm hiểu WebGL Phần 3: Đi sau vào cách code WebGL appication - các ví dụ","pathname":"/javascript/advanced/tim-hieu-webgl-phan-3-di-sau-vao-cach-code-webgl-appication-cac-vi-du","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-webgl-phan-3-di-sau-vao-cach-code-webgl-appication-cac-vi-du-BMvRpNYrzwY"},{"id":"hRFWiZTAvYsLgxs5FTtR","title":"Tìm hiểu WebGL Phần 4: Các ví dụ.","pathname":"/javascript/advanced/tim-hieu-webgl-phan-4-cac-vi-du.","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-webgl-phan-4-cac-vi-du-1VgZv3X9lAw"},{"id":"mBBBKUgNjpNkKPKR0Lag","title":"=== END WebGL  ===","pathname":"/javascript/advanced/end-webgl","siteSpaceId":"sitesp_xQRWC"},{"id":"ojVkcKwQr6ov31TBoJsn","title":"Getting started with systemjs full (ok)","pathname":"/javascript/advanced/getting-started-with-systemjs-full-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f603","description":"Tất cả code ở đây https://github.com/systemjs/systemjs-examples"},{"id":"dfP9WGfai9LinjiOkarn","title":"Đọc thêm bài này Mô-đun ECMAScript và khả năng tương thích trình duyệt (ok)","pathname":"/javascript/advanced/doc-them-bai-nay-mo-dun-ecmascript-va-kha-nang-tuong-thich-trinh-duyet-ok","siteSpaceId":"sitesp_xQRWC","description":"https://molily.de/ecmascript-modules/"},{"id":"utBPs5Dlx1A9wDbfueyn","title":"Thư viện chặn truy cập vào Devtool (ok)","pathname":"/javascript/advanced/thu-vien-chan-truy-cap-vao-devtool-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f616"},{"id":"Kwy8oHroSDM5jTIGTkBP","title":"=== START JAVASCRIPT Vanila  ===","pathname":"/javascript/advanced/start-javascript-vanila","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"HodvgF27zfNlh3BHSuMu","title":"Làm cách nào để ngăn sự kiện onclick của cha mẹ kích hoạt khi nhấp vào con parent, child ? (ok)","pathname":"/javascript/advanced/lam-cach-nao-de-ngan-su-kien-onclick-cua-cha-me-kich-hoat-khi-nhap-vao-con-parent-child-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f604","description":"https://stackoverflow.com/questions/1369035/how-do-i-prevent-a-parents-onclick-event-from-firing-when-a-child-anchor-is-cli"},{"id":"LLnPJEXhmpYMaCHTCqmC","title":"Bootstrap 5 - multi item carousel (ok)","pathname":"/javascript/advanced/bootstrap-5-multi-item-carousel-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f601","description":"https://www.codeply.com/p/0CWffz76Q9"},{"id":"KiNaALFLFN5mlhrS8ANB","title":"Three dots ( … ) in JavaScript","pathname":"/javascript/advanced/three-dots-...-in-javascript","siteSpaceId":"sitesp_xQRWC","description":"https://anonystick.com/blog-developer/three-dots-in-javascript-2019051161037664.jsx"},{"id":"-M1E4XpU3eopN_d3h0M7","title":"\"... Three Dots\" đã thay đổi javascript như thếnào ?","pathname":"/javascript/advanced/master","siteSpaceId":"sitesp_xQRWC","description":"https://learnreac.gitbook.io/project/object-for-three-dots-array-for-three-dots-ok"},{"id":"K6vtpjlqH17MSzZWVJA5","title":"Array-like objects, Chuyển đối tượng arguments thành array (ok)","pathname":"/javascript/advanced/array-like-objects-chuyen-doi-tuong-arguments-thanh-array-ok","siteSpaceId":"sitesp_xQRWC","description":"https://anonystick.com/blog-developer/array-like-objects-va-generic-methods-javascript-ban-chua-he-biet-2019122620485228"},{"id":"FhCUDIMCioCVyS1HtDVG","title":"Making a short alias for document.querySelectorAll (ok)","pathname":"/javascript/advanced/making-a-short-alias-for-document.queryselectorall-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f607","description":"https://stackoverflow.com/questions/13383886/making-a-short-alias-for-document-queryselectorall"},{"id":"iEkpPLXfsHx6TfHjGq4Z","title":"JavasScript Siblings (ok)","pathname":"/javascript/advanced/javasscript-siblings-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.javascripttutorial.net/javascript-dom/javascript-siblings/"},{"id":"Ei3Nbw0Bq92mGtaasTiS","title":"JavaScript Modules Full (ok)","pathname":"/javascript/advanced/javascript-modules-full-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.w3schools.com/js/js_modules.asp"},{"id":"gEPc9my8Xc98zfA2QDEE","title":"JavaScript select Element (ok)","pathname":"/javascript/advanced/javascript-select-element-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.javascripttutorial.net/javascript-dom/javascript-select-box/"},{"id":"mRwPObhOzy4Knx0DrnQ0","title":"=== END JAVASCRIPT Vanila  ===","pathname":"/javascript/advanced/end-javascript-vanila","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"AaY8cytngbdwlTIid7jf","title":"Sử dụng async, await, bất đồng bộ lấy dữ liệu Pagination, sử dụng Deferred 👌 phần 2  (ok)","pathname":"/javascript/advanced/su-dung-async-await-bat-dong-bo-lay-du-lieu-pagination-su-dung-deferred-phan-2-ok","siteSpaceId":"sitesp_xQRWC","description":"https://lernphp.gitbook.io/project/su-dung-async-await-bat-dong-bo-lay-du-lieu-pagination-su-dung-deferred-phan-2-ok"},{"id":"n03gqCHr13fuH6XsjdTd","title":"how to use multiple ternary operator in javascript, ?:, ?? (ok)","pathname":"/javascript/advanced/how-to-use-multiple-ternary-operator-in-javascript-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/7757549/multiple-ternary-operators"},{"id":"YcVgZ2wlLVD2QgLAZmzp","title":"[DATETIMEPICKER] jQuery Plugin Date and Time Picke Full (ok)","pathname":"/javascript/advanced/datetimepicker-jquery-plugin-date-and-time-picke-full-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f605","description":"https://github.com/search?q=datetimepicker"},{"id":"fVOYmZoWjz9mcy01qGS8","title":"=== START tutorial HYPERAPP ==","pathname":"/javascript/advanced/start-tutorial-hyperapp","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"5slaPPMcSqj4ZXovH8EI","title":"[HYPERAPP] Hyperapp - JavaScript micro-framework chỉ 1kB (ok)","pathname":"/javascript/advanced/hyperapp-hyperapp-javascript-micro-framework-chi-1kb-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/hyperapp-javascript-micro-framework-chi-1kb-co-gi-4P856PVAZY3"},{"id":"ScaV8sj0QUKkThsMo69A","title":"[HYPERAPP] hyperapp-tutorial-step-1 (ok)","pathname":"/javascript/advanced/hyperapp-hyperapp-tutorial-step-1-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codesandbox.io/s/gq662"},{"id":"pnGu1sdcDARsxodMfcdW","title":"[HYPERAPP] hyperapp-tutorial-step-2 (ok)","pathname":"/javascript/advanced/hyperapp-hyperapp-tutorial-step-2-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codesandbox.io/s/lu11w"},{"id":"daAgy5KOOdWzXfT2tc1V","title":"[HYPERAPP] hyperapp-tutorial-step-3 (ok)","pathname":"/javascript/advanced/hyperapp-hyperapp-tutorial-step-3-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codesandbox.io/s/hyperapp-tutorial-step-3-2mmug"},{"id":"RtvC4CRUX58Ixtvs1WHJ","title":"[HYPERAPP] hyperapp-tutorial-step-4 (ok)","pathname":"/javascript/advanced/hyperapp-hyperapp-tutorial-step-4-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codesandbox.io/s/hyperapp-tutorial-step-4-8u9q8"},{"id":"zgD9nt6NRFm46IsQF0jB","title":"=== END tutorial HYPERAPP ==","pathname":"/javascript/advanced/end-tutorial-hyperapp","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"nzrXQmPis8KI5hhao9ZP","title":"Free and Open Source Web Builder Framework","pathname":"/javascript/advanced/free-and-open-source-web-builder-framework","siteSpaceId":"sitesp_xQRWC","description":"https://grapesjs.com/demo.html"},{"id":"LK1YnIwixs0yDH9wW2IP","title":"How to recursively fetch data from paginated API then combine into one array (ok)","pathname":"/javascript/advanced/how-to-recursively-fetch-data-from-paginated-api-then-combine-into-one-array-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f601","description":"https://stackoverflow.com/questions/72420288/how-to-recursively-fetch-data-from-paginated-api-then-combine-into-one-array"},{"id":"4X2XX49L3opWQnXzCeOi","title":"Create a form with dom with nested tags, Wrapping a set of DOM elements using JavaScript (ok)","pathname":"/javascript/advanced/create-a-form-with-dom-with-nested-tags-wrapping-a-set-of-dom-elements-using-javascript-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f606","description":""},{"id":"nlj273kHfKIREDYKDuz5","title":"Array find, Tìm phần tử đầu tiên thỏa mãn điều kiện (ok)","pathname":"/javascript/advanced/array-find-tim-phan-tu-dau-tien-thoa-man-dieu-kien-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f607","description":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find"},{"id":"3QeOYLG4SIsFURDqPeJD","title":"Array find, Tìm phần tử cuối cùng thỏa mãn điều kiện (ok)","pathname":"/javascript/advanced/array-find-tim-phan-tu-cuoi-cung-thoa-man-dieu-kien-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f601","description":"https://stackoverflow.com/questions/40929260/find-last-index-of-element-inside-array-by-certain-condition"},{"id":"wWVyKTrrO08tOgK8qPDD","title":"Cách tích hợp bộ lọc select chọn nhanh Tỉnh, Thành & Quận, Huyện, districts, provinces (ok)","pathname":"/javascript/advanced/cach-tich-hop-bo-loc-select-chon-nhanh-tinh-thanh-and-quan-huyen-districts-provinces-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"UE78vipAqDrKFKCPpVZM","title":"object with methods, you can simply call a method from the object returned. (ok)","pathname":"/javascript/advanced/object-with-methods-you-can-simply-call-a-method-from-the-object-returned.-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"ZXvbyE9xFiKpJ43GBibK","title":"Portfolio, Filter, Gallery, Tabmenu (ok)","pathname":"/javascript/advanced/portfolio-filter-gallery-tabmenu-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"nmQQJ7lkwY9CQ8nVzy6N","title":"JavaScript chạy bất đồng bộ như thế nào?, Microtask ,Macrotask, queueMicrotask bài viết hay (ok)","pathname":"/javascript/advanced/javascript-chay-bat-dong-bo-nhu-the-nao-microtask-macrotask-queuemicrotask-bai-viet-hay-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/javascript-chay-bat-dong-bo-nhu-the-nao-gDVK2JW0KLj"},{"id":"fRbFpdQExRadKguKIQOo","title":"Learn prototypejs 😒😒😒","pathname":"/javascript/advanced/learn-prototypejs","siteSpaceId":"sitesp_xQRWC","emoji":"1f60b","description":"https://prototypejs.org/download/"},{"id":"bb2Hz0xCRzNAdfNgrP3A","title":"=== START JavaScript chuyên sâu ===","pathname":"/javascript/advanced/start-javascript-chuyen-sau","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"ca7lRuwDE9ReAfJ4MgLJ","title":"[JavaScript chuyên sâu] Higher order function trong JavaScript - phần 1 (ok)","pathname":"/javascript/advanced/javascript-chuyen-sau-higher-order-function-trong-javascript-phan-1-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=1harjGo3KWg&list=PLmSai9ZRK6uyZ7L8k10pOSvQRhZbg1W4w&index=1"},{"id":"lKSgjkK7OJYS8Yonl6CI","title":"[JavaScript chuyên sâu] - Higher order function - phần 2: closure, currying, callback","pathname":"/javascript/advanced/javascript-chuyen-sau-higher-order-function-phan-2-closure-currying-callback","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=G2fo9dQ1DPM&list=PLmSai9ZRK6uyZ7L8k10pOSvQRhZbg1W4w&index=2"},{"id":"1As9WUe9F374I0I83NkB","title":"[JavaScript chuyên sâu] - So sánh Constructor Function và Factory Function","pathname":"/javascript/advanced/javascript-chuyen-sau-so-sanh-constructor-function-va-factory-function","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=cKeijtIJLTs&list=PLmSai9ZRK6uyZ7L8k10pOSvQRhZbg1W4w&index=3"},{"id":"YPyLErBPkES3d40ZsdY9","title":"[JavaScript chuyên sâu] - 5 vai trò của Function: function, object, property, callback, constructor","pathname":"/javascript/advanced/javascript-chuyen-sau-5-vai-tro-cua-function-function-object-property-callback-constructor","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=CkvAe1dgTmM&list=PLmSai9ZRK6uyZ7L8k10pOSvQRhZbg1W4w&index=5"},{"id":"yuHMCCT0ygpmljNGy8Dk","title":"[JavaScript chuyên sâu] : Đồng bộ và bất đồng bộ của JavaScript - phần 1: Callback","pathname":"/javascript/advanced/javascript-chuyen-sau-dong-bo-va-bat-dong-bo-cua-javascript-phan-1-callback","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=KDhgDyMQzME&list=PLmSai9ZRK6uyZ7L8k10pOSvQRhZbg1W4w&index=6"},{"id":"uq0RJOIM9By9mw9KCstx","title":"[JavaScript chuyên sâu]: Từ hàm IIFE tới Module Pattern","pathname":"/javascript/advanced/javascript-chuyen-sau-tu-ham-iife-toi-module-pattern","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=uqSijKe2Ouw&list=PLmSai9ZRK6uyZ7L8k10pOSvQRhZbg1W4w&index=4"},{"id":"0qTz4P87xJrP7rFefYCA","title":"IIFE=>Immediately Invoked Function Expression=>khởi tạo function & chạy ngay, import, export như nào","pathname":"/javascript/advanced/javascript-chuyen-sau-tu-ham-iife-toi-module-pattern/iife-greater-than-immediately-invoked-function-expression-greater-than-khoi-tao-function-and-chay-ng","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","breadcrumbs":[{"label":"[JavaScript chuyên sâu]: Từ hàm IIFE tới Module Pattern"}]},{"id":"fL1N1tX1vQMyh0zl6lKy","title":"Tìm hiểu về Higher-Order Functions trong JavaScript","pathname":"/javascript/advanced/tim-hieu-ve-higher-order-functions-trong-javascript","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-ve-higher-order-functions-trong-javascript-yMnKMY2mK7P"},{"id":"qx0TjTIpRZopaiDIoPMj","title":"=== END JavaScript chuyên sâu ===","pathname":"/javascript/advanced/end-javascript-chuyen-sau","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"rXPVWfCu9x2y7mVl9TMx","title":"QR-Card (ok)","pathname":"/javascript/advanced/qr-card-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/hiiamrohit/QR-Code-Generator"},{"id":"NAyuVDHPXbc3AGcuMIAK","title":"=== START DATATABLE ===","pathname":"/javascript/advanced/start-datatable","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"aPIN5PXuTTxHwzcMyhUU","title":"[DATATABLE] bộ lọc sử dụng các thẻ bên trong td matter.vn (ok)","pathname":"/javascript/advanced/datatable-bo-loc-su-dung-cac-the-ben-trong-td-matter.vn-ok","siteSpaceId":"sitesp_xQRWC","description":"Theo mặc định search tìm kiếm các text bên trong thẻ td"},{"id":"fpV5dN2qUFUtbmgVTYrp","title":"[DATATABLE] JQuery Datatables Editor - Alternative to the official one (ok)","pathname":"/javascript/advanced/datatable-jquery-datatables-editor-alternative-to-the-official-one-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f601","description":"https://github.com/luca-vercelli/DataTable-AltEditor"},{"id":"WS4ahnAXRJlwhp6zH5O7","title":"Example: Datatables Add Edit Delete with Ajax, PHP & MySQL (ok)","pathname":"/javascript/advanced/example-datatables-add-edit-delete-with-ajax-php-and-mysql-ok","siteSpaceId":"sitesp_xQRWC","description":"https://webdamn.com/datatables-add-edit-delete-with-ajax-php-mysql/"},{"id":"jsTMwf8FEVjqI70RVz0P","title":"[DATATABLE] fixedColumns, DataTable, Left and right fixed columns (ok)","pathname":"/javascript/advanced/datatable-fixedcolumns-datatable-left-and-right-fixed-columns-ok","siteSpaceId":"sitesp_xQRWC","description":"https://datatables.net/extensions/fixedcolumns/examples/initialisation/left_right_columns.html"},{"id":"-MfQsfTLE9tKw6ygqTBG","title":"[DATATABLE] Sử dụng thư viện dataTables.bootstrap.min.js && dataTables.bootstrap.min.js (ok)","pathname":"/javascript/advanced/su-dung-thu-vien-datatables.bootstrap.min.js-and-and-datatables.bootstrap.min.js-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"bFCvjAu2kQGZLHzyFgoT","title":"[DATATABLE] DataTables.net with DataTableQueryBuilder sample input filter (ok)","pathname":"/javascript/advanced/datatable-datatables.net-with-datatablequerybuilder-sample-input-filter-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"IxKnZyeyy0mhbh9zEtqa","title":"[DATATABLE] How to use Tabledit plugin with jQuery Datatable in PHP Ajax (ok)","pathname":"/javascript/advanced/datatable-how-to-use-tabledit-plugin-with-jquery-datatable-in-php-ajax-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.webslesson.info/2020/05/make-editable-datatable-using-jquery-tabledit-plugin-with-php-ajax.html"},{"id":"GfoO17MEEhTlqB7uzBvF","title":"[DATATABLE]  DataTables Custom Filter Demo (ok)","pathname":"/javascript/advanced/datatable-datatables-custom-filter-demo-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codepen.io/markmichon/pen/kMLeQr"},{"id":"LkbZpP4xDI1tRfUJGL5B","title":"[DATATABLE] Datatable multiple checkbox demo (ok)","pathname":"/javascript/advanced/datatable-datatable-multiple-checkbox-demo-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codepen.io/bhargavmehta/pen/Zpzddv"},{"id":"R9XyUgCO1duMSbn8A3zq","title":"[DATATABLE] HTML5 export buttons (ok)","pathname":"/javascript/advanced/datatable-html5-export-buttons-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codepen.io/RedJokingInn/pen/zZyRmR"},{"id":"iQiR0eFokeRB4xTPIsUT","title":"[DATATABLE] CodePen Home DataTable 2 Card view (ok)","pathname":"/javascript/advanced/datatable-codepen-home-datatable-2-card-view-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codepen.io/RedJokingInn/pen/bGoppqP"},{"id":"TT8BzZyfnT99L7vEiMVM","title":"[DATATABLE] DataTables - Column Search (ok)","pathname":"/javascript/advanced/datatable-datatables-column-search-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codepen.io/RedJokingInn/pen/vYJKKEJ"},{"id":"G5jPp6XWL4R3qTHsj1mb","title":"[DATATABLE] CodePen Home dataTables conditional row and cell styling (ok)","pathname":"/javascript/advanced/datatable-codepen-home-datatables-conditional-row-and-cell-styling-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codepen.io/RedJokingInn/pen/jKzPpQ"},{"id":"2ZNQzyU8x6tDkY7KTTkF","title":"[DATATABLE] DataTables example of styling Excel export(ok)","pathname":"/javascript/advanced/datatable-datatables-example-of-styling-excel-export-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codepen.io/RedJokingInn/pen/oYJbMP"},{"id":"XpM9WjCrnK4lovhpHTTM","title":"=== END DATATABLE ===","pathname":"/javascript/advanced/end-datatable","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"FbZf5dWq9M8PAURrxkbI","title":"Bất ngờ về sử dụng Window History full  1 (ok)","pathname":"/javascript/advanced/bat-ngo-ve-su-dung-window-history-full-1-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f605","description":""},{"id":"ISK5GKqTiOJFZETZXZuO","title":"Bất ngờ về sử dụng Window History full  2, window.history.scrollRestoration,history.replaceState(ok)","pathname":"/javascript/advanced/bat-ngo-ve-su-dung-window-history-full-2-window.history.scrollrestoration-history.replacestate-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f601","description":"https://openplanning.net/12403/javascript-history-api"},{"id":"u3I3A3mxFxL8QR4aqLMo","title":"workingHoursBetweenTimes, tính giờ làm việc, giờ làm thêm (ok)","pathname":"/javascript/advanced/workinghoursbetweentimes-tinh-gio-lam-viec-gio-lam-them-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"CE2q3l8F4bpL8FkcWi6I","title":"addDataToArray, cộng mảng đối tượng với điều kiện key == (ok)","pathname":"/javascript/advanced/adddatatoarray-cong-mang-doi-tuong-voi-dieu-kien-key-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f605","description":"https://kobesekkei.cybozu.com/k/194/"},{"id":"G6v0a36IvCwUMJUBWboK","title":"You can get the number of days in a specified month (ok)","pathname":"/javascript/advanced/you-can-get-the-number-of-days-in-a-specified-month-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/13146418/find-all-the-days-in-a-month-with-date-object"},{"id":"0UJ432Atxzn8xYXpKqpY","title":"Lấy giá trị khác nhau đầu tiên, cuối trong một mảng Object (ok)","pathname":"/javascript/advanced/lay-gia-tri-khac-nhau-dau-tien-cuoi-trong-mot-mang-object-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/9229645/remove-duplicate-values-from-js-array"},{"id":"WMfcFz6M6Ok2e26MYkkS","title":"swiperjs.com (ok)","pathname":"/javascript/advanced/swiperjs.com-ok","siteSpaceId":"sitesp_xQRWC","description":"https://swiperjs.com/"},{"id":"-M_Pg-0ZP2Y9bT0AAbHd","title":"Swiper Slider (ok)","pathname":"/javascript/advanced/swiperjs.com-ok/swiper-slider-ok","siteSpaceId":"sitesp_xQRWC","description":"https://swiperjs.com/","breadcrumbs":[{"label":"swiperjs.com (ok)"}]},{"id":"dRYPLA80BO22YbOhtnUF","title":"Một số cách viết ngắn gọn code trong JS phần 1 (ok)","pathname":"/javascript/advanced/mot-so-cach-viet-ngan-gon-code-trong-js-phan-1-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"Lb2M2hjKu1ODhfMv7qA1","title":"Một số cách viết ngắn gọn code trong JS phần 2 (ok)","pathname":"/javascript/advanced/mot-so-cach-viet-ngan-gon-code-trong-js-phan-2-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"f13WhxvpDrmc9vdHmcrF","title":"literal javascript, php (ok)","pathname":"/javascript/advanced/literal-javascript-php-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"5yDWpaeI015fCOecE7h4","title":"Bài toán kinh điển sử dụng three dots lấy tất cả các key của object, key same, plus (ok)","pathname":"/javascript/advanced/bai-toan-kinh-dien-su-dung-three-dots-lay-tat-ca-cac-key-cua-object-key-same-plus-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"Fjckl5rqrwEa7lIzlT9E","title":"convert object to array javascript (ok)","pathname":"/javascript/advanced/convert-object-to-array-javascript-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"KAQ3f4aIiKOrM8vxKvXW","title":"==== Start Google Sheet ====","pathname":"/javascript/advanced/start-google-sheet","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"NbH3DGB2yZqr7LSWvdOc","title":"Kintone width Appscript (ok)","pathname":"/javascript/advanced/kintone-width-appscript-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"IxURJ7Eehr5WssAWxSoU","title":"[GOOGLE-SHEETS] Buttons in Google Sheets","pathname":"/javascript/advanced/google-sheets-buttons-in-google-sheets","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"P86lAo0qhknaE38nbQE3","title":"[GOOGLE-SHEETS] thực hiện chuyển dữ liệu sang bản khác (ok)","pathname":"/javascript/advanced/google-sheets-thuc-hien-chuyen-du-lieu-sang-ban-khac-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"DKytWu7N1i3e4ATDBWxC","title":"[GOOGLE-SHEETS] method getRange (ok)","pathname":"/javascript/advanced/google-sheets-method-getrange-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/11947590/sheet-getrange1-1-1-12-what-does-the-numbers-in-bracket-specify"},{"id":"E4o4uEdQvI5LRYH0WU5M","title":"[GOOGLE-SHEETS] method getRange (ok)","pathname":"/javascript/advanced/google-sheets-method-getrange-ok-1","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"0bs6YMuK5qe600g7TzOs","title":"Bài 1: Khai Báo Biến và Đọc Ghi Ô – Dải Ô (Cell / Range)","pathname":"/javascript/advanced/bai-1-khai-bao-bien-va-doc-ghi-o-dai-o-cell-range","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/khai-bao-bien-doc-ghi-o-dai-o-cell-range/"},{"id":"Q0FLOY8gbnRRnJRuIyOb","title":"Bài 2: Các Hàm Lấy Giá Trị và Đặt Giá Trị Dải Ô getRange – getValues – setValues","pathname":"/javascript/advanced/bai-2-cac-ham-lay-gia-tri-va-dat-gia-tri-dai-o-getrange-getvalues-setvalues","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/cac-ham-lay-dat-gia-tri-getrange-getvalues-setvalues/"},{"id":"vDtCr1ispFvXCnM2YEMK","title":"Bài 3: Copy và Di Chuyển Dải Ô Sang Sheet khác","pathname":"/javascript/advanced/bai-3-copy-va-di-chuyen-dai-o-sang-sheet-khac","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"GfvXObCO78HynBIiVJas","title":"Bài 4: Vòng Lặp For","pathname":"/javascript/advanced/bai-4-vong-lap-for","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"HWUkQuFBNPoxhBp1v32E","title":"Bài 5: Di chuyển dòng từ Sheet này sang Sheet khác","pathname":"/javascript/advanced/bai-5-di-chuyen-dong-tu-sheet-nay-sang-sheet-khac","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/di-chuyen-dong-tu-sheet-nay-sang-sheet-khac-hoc-app-script-sheet/"},{"id":"xHwATvx9crR9aXUkIxAN","title":"[Help] – Chuyển Cột Sang Hàng (bỏ ô trống) (ok)","pathname":"/javascript/advanced/help-chuyen-cot-sang-hang-bo-o-trong-ok","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/chuyen-cot-sang-hang-bo-o-trong/"},{"id":"IYX8DGYRfla0B5C04f18","title":"Bài 6: Câu lệnh điều kiện IF (ok)","pathname":"/javascript/advanced/bai-6-cau-lenh-dieu-kien-if-ok","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/cau-lenh-dieu-kien-if/"},{"id":"iH9FfZpnJ8TOqIX0cq10","title":"Bài 7: Giới thiệu các Trigger App Script – onEdit onOpen","pathname":"/javascript/advanced/bai-7-gioi-thieu-cac-trigger-app-script-onedit-onopen","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/gioi-thieu-trigger-app-script-onedit-onopen/"},{"id":"PkabdRP6O2I7biNTiEJz","title":"[Help] – Form nhập liệu đơn giản","pathname":"/javascript/advanced/help-form-nhap-lieu-don-gian","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/help-form-nhap-lieu-don-gian/"},{"id":"t7t9vpcz6RcN5UKkLaU0","title":"Bài 8: Hộp thoại Dialog / Popup","pathname":"/javascript/advanced/bai-8-hop-thoai-dialog-popup","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/hop-thoai-dialog-popup-app-script-sheet/"},{"id":"jxvD0TI5wFtot48yGUMF","title":"Bài 9: Ghi công thức Google Sheet vào ô","pathname":"/javascript/advanced/bai-9-ghi-cong-thuc-google-sheet-vao-o","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/ghi-cong-thuc-google-sheet-vao-o/"},{"id":"66F4SiLi7jLW4BZJ0yHS","title":"Bài 10: Đọc Ghi Mảng (Array) App Script","pathname":"/javascript/advanced/bai-10-doc-ghi-mang-array-app-script","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/doc-ghi-mang-array-app-script/"},{"id":"bCBL9l7oEdjosbJT00KI","title":"Bài 11: Tạo xác thực dữ liệu phụ thuộc","pathname":"/javascript/advanced/bai-11-tao-xac-thuc-du-lieu-phu-thuoc","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/tao-xac-thuc-du-lieu-phu-thuoc-apps-script/"},{"id":"qOzfWyfo0Y76hpQviw1Z","title":"Lấy Email người dùng đang hoạt động trên Google Sheet – getActiveUser","pathname":"/javascript/advanced/lay-email-nguoi-dung-dang-hoat-dong-tren-google-sheet-getactiveuser","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"bBDJR6r14N3h6QDxpxin","title":"Bài 12: Liên kết Google Form – Sheet – Apps Script","pathname":"/javascript/advanced/bai-12-lien-ket-google-form-sheet-apps-script","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/lien-ket-google-form-sheet-apps-script/"},{"id":"KscZoYfyQr3J5wE9NHax","title":"[Series Email] Bài 1: Gửi Email bằng Apps Script cơ bản","pathname":"/javascript/advanced/series-email-bai-1-gui-email-bang-apps-script-co-ban","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/gui-email-bang-apps-script-co-ban/"},{"id":"uVT4Hx9XYIUSDdzUCr3p","title":"[Series Email] Bài 2: Gửi Email Đính Kèm File – Hình Ảnh","pathname":"/javascript/advanced/series-email-bai-2-gui-email-dinh-kem-file-hinh-anh","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/gui-email-dinh-kem-file-hinh-anh/"},{"id":"gQNOFRULNdT5kDz0DC78","title":"[Series Email] Bài 3: Gửi Email Cho Danh Sách Nhập Vào Từ Google Sheet","pathname":"/javascript/advanced/series-email-bai-3-gui-email-cho-danh-sach-nhap-vao-tu-google-sheet","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/gui-email-cho-danh-sach-nhap-vao-tu-google-sheet/"},{"id":"lSDMtUVAjnhPlADIOKNW","title":"Addon Email All in One | Email AI1 | RA MẮT BẢN THỬ NGHIỆM","pathname":"/javascript/advanced/addon-email-all-in-one-or-email-ai1-or-ra-mat-ban-th-nghiem","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/addon-email-all-in-one-email-ai1-ra-mat-ban-thu-nghiem/"},{"id":"wW6mt7LRcMsQt2wELVJs","title":"[Series Email] Bài 4: Gửi Email Bcc Cho Danh Sách Nhập Vào Từ Google Sheet","pathname":"/javascript/advanced/series-email-bai-4-gui-email-bcc-cho-danh-sach-nhap-vao-tu-google-sheet","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/gui-email-bcc-cho-danh-sach-nhap-vao-tu-google-sheet/"},{"id":"QeYDea2nL5T5vIluvn5d","title":"[Series Email] Bài 5: Tạo Hộp Thoại Xem Email Trước Khi Gửi","pathname":"/javascript/advanced/series-email-bai-5-tao-hop-thoai-xem-email-truoc-khi-gui","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"AcYY6v2W65Un37QbNH8i","title":"[Series Email] Bài 6: Gửi Email Theo Template Cho Sẵn","pathname":"/javascript/advanced/series-email-bai-6-gui-email-theo-template-cho-san","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/gui-email-theo-template-cho-san/"},{"id":"CVdawxVce0Lb6tcrVQJj","title":"[Series Email] Bài 7: Gửi Email Xác Nhận Điền Form (Email Confirmation)","pathname":"/javascript/advanced/series-email-bai-7-gui-email-xac-nhan-dien-form-email-confirmation","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/gui-email-xac-nhan-dien-form-email-confirmation/"},{"id":"erpfAHdV1he96UDZRmGl","title":"[Series Email] Bài 8: Hẹn Giờ Gửi Email","pathname":"/javascript/advanced/series-email-bai-8-hen-gio-gui-email","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/hen-gio-gui-email/"},{"id":"37YbvtIpnCha8fWbEMAM","title":"SpreadsheetApp","pathname":"/javascript/advanced/spreadsheetapp","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/spreadsheetapp/"},{"id":"IRBn4gjPjA5nbSwthaid","title":"Giới hạn các Service trong Apps Script","pathname":"/javascript/advanced/gioi-han-cac-service-trong-apps-script","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/gioi-han-service/"},{"id":"wSXzqL07ESeSKaAlDY09","title":"[CF] Lọc dải ô bao gồm dải ô khác","pathname":"/javascript/advanced/cf-loc-dai-o-bao-gom-dai-o-khac","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/loc-dai-o-bao-gom-dai-o-khac/"},{"id":"h6FvgQlRZEy1CXuNAm5n","title":"Cách lưu trữ trong Google Apps Script – PropertiesService","pathname":"/javascript/advanced/cach-luu-tru-trong-google-apps-script-propertiesservice","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/luu-tru-apps-script-properties-service/"},{"id":"FPKI6PGlx1wpTU5XCmsa","title":"[CF] Custom Function Google Sheets là gì và Cách ‘cài đặt’","pathname":"/javascript/advanced/cf-custom-function-google-sheets-la-gi-va-cach-cai-dat","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/cf-custom-function-google-sheets-la-gi-va-cach-cai-dat/"},{"id":"OniHQCTRtoOWEU0iPzII","title":"[CF] Tìm Ô – Có Giá Trị – Cuối Cùng Trong Cột – Google Sheets","pathname":"/javascript/advanced/cf-tim-o-co-gia-tri-cuoi-cung-trong-cot-google-sheets","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/tim-o-co-gia-tri-cuoi-cung-trong-cot/"},{"id":"f2IIsqGMJO63dyPChq8b","title":"[CF] Đếm số lần xuất hiện kí tự trong dải ô Google Sheets","pathname":"/javascript/advanced/cf-dem-so-lan-xuat-hien-ki-tu-trong-dai-o-google-sheets","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/dem-so-lan-xuat-hien-ki-tu-trong-dai-o-google-sheets/"},{"id":"vw51eO1kK4wbF2ZOgb48","title":"[CF] Lọc dải ô không bao gồm","pathname":"/javascript/advanced/cf-loc-dai-o-khong-bao-gom","siteSpaceId":"sitesp_xQRWC","description":"https://hocggsheet.com/loc-dai-o-khong-bao-gom/"},{"id":"uuaFnBab2S5MMWGPQIDw","title":"==== End Google Sheet ====","pathname":"/javascript/advanced/end-google-sheet","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"ACnIngjQStIuCibUbX47","title":"[REDUCE] JavaScript Array reduce()","pathname":"/javascript/advanced/reduce-javascript-array-reduce","siteSpaceId":"sitesp_xQRWC","description":"https://niithanoi.edu.vn/reduce-trong-javascript.html"},{"id":"0ujrCSLjjmCOpt0cc6bL","title":"Merge object and split array by size, Trộn object và tách array theo size (ok)","pathname":"/javascript/advanced/merge-object-and-split-array-by-size-tron-object-va-tach-array-theo-size-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"GOlggl35X8pZNQ34Xyij","title":"Đặt điều kiện mới load js (ok)","pathname":"/javascript/advanced/dat-dieu-kien-moi-load-js-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"XUJYf8q1EAa0IZbauUGs","title":"Calculate working days between two dates in Javascript excepts holidays (ok)","pathname":"/javascript/advanced/calculate-working-days-between-two-dates-in-javascript-excepts-holidays-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"s4iwoB96GwyJ9OYejIuS","title":"Remove everything after a certain character remove replace (ok)","pathname":"/javascript/advanced/remove-everything-after-a-certain-character-remove-replace-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/5631384/remove-everything-after-a-certain-character"},{"id":"X2WiXhtPn3UbMrg3FnR1","title":"CodePen Home Image zoom on hover - auto run - view full (ok)","pathname":"/javascript/advanced/codepen-home-image-zoom-on-hover-auto-run-view-full-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/o/-L_qP1P_raQ3RdMoh5NE/s/-LsqgAqbSGjkO0e50FMT/codepen-home-image-zoom-on-hover-auto-run-view-ok"},{"id":"VNpMbeTiSEXnfPYwzvY4","title":"======== Start Slider Revolution =======","pathname":"/javascript/advanced/start-slider-revolution","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"edoUDAIF1ItJMsXg7x98","title":"How to start (ok)","pathname":"/javascript/advanced/how-to-start-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.twsubway.com.tw/tw/assets/plugins/revolution-slider/documentation/documentation.html#how_to_start"},{"id":"5REskPtAnZYBEs5kAwVX","title":"Revolution Lightbox tham khảo","pathname":"/javascript/advanced/revolution-lightbox-tham-khao","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"sgkYRHf4Q5fgcBT38csY","title":"Mẫu và thực viện để thực hành (ok)","pathname":"/javascript/advanced/mau-va-thuc-vien-de-thuc-hanh-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"zzArEXekQCziH7yZiCvV","title":"Tài liệu Slider Revolution Jquery 2.0 (ok)","pathname":"/javascript/advanced/tai-lieu-slider-revolution-jquery-2.0-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"65kAVqgizEl0EZxtReQ3","title":"Tài liệu Slider Revolution Jquery 4.1.2 (ok)","pathname":"/javascript/advanced/tai-lieu-slider-revolution-jquery-4.1.2-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"IuQGxbQUswUqQi2HeYw0","title":"======== End Slider Revolution =======","pathname":"/javascript/advanced/end-slider-revolution","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"sbB8UZzCEXtC5TNA1EAY","title":"jQuery click / toggle between two functions (ok)","pathname":"/javascript/advanced/jquery-click-toggle-between-two-functions-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/4911577/jquery-click-toggle-between-two-functions/18287434"},{"id":"HlmfaNwEtsxb3IGK5W0i","title":"[TEXT ANIMATION] làm hiệu ứng chữ dòng trên xuất hiện trước rồi mới đến dòng dưới (ok)","pathname":"/javascript/advanced/text-animation-lam-hieu-ung-chu-dong-tren-xuat-hien-truoc-roi-moi-den-dong-duoi-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codepen.io/quick-brown-fox/pen/GQrNKJ"},{"id":"-MkBcKZP6TBHTojY_E7O","title":"Phát hiện phần tử xuất hiện ở màn hình, Detect element appearing on screen, view (ok)","pathname":"/javascript/advanced/phat-hien-phan-tu-xuat-hien-o-man-hinh-detect-element-appearing-on-screen-ok","siteSpaceId":"sitesp_xQRWC","description":"http://jsfiddle.net/RRSmQ/"},{"id":"-Mh-CDfe2ITQPJWsptCT","title":"what does !function in Javascript mean? (ok)","pathname":"/javascript/advanced/what-does-function-in-javascript-mean-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/9267289/what-does-function-in-javascript-mean"},{"id":"-Mh-Ihe2s_L7hmpfX4-e","title":"[WEBPACK]  Một cách phân biệt khi bundle ra es5 hay es6 một ví dụ sử dụng webpack (ok)","pathname":"/javascript/advanced/mot-cach-phan-biet-khi-bundle-ra-es5-hay-es6-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-Mh-H6yg1jz0_Oh5rICh","title":"Javascript Self Invoking Functions (ok)","pathname":"/javascript/advanced/javascript-self-invoking-functions-ok","siteSpaceId":"sitesp_xQRWC","description":"https://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/"},{"id":"-Mgyn2yorjGZdQwBdah9","title":"====== Start Convert ES5 class to ES6 class  ====","pathname":"/javascript/advanced/start-convert-es5-class-to-es6-class","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MgynDqbeOIwIL9iW-J4","title":"VS Code tips: Convert ES5 class to ES6 class code action (ok)","pathname":"/javascript/advanced/vs-code-tips-convert-es5-class-to-es6-class-code-action-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MgynBWgL4qRT9nkqA7y","title":"====== End Convert ES5 class to ES6 class  ====","pathname":"/javascript/advanced/end-convert-es5-class-to-es6-class","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MgJSuT-ExzonBiJpvDa","title":"Get Substring between two characters using javascript (ok)","pathname":"/javascript/advanced/get-substring-between-two-characters-using-javascript-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/14867835/get-substring-between-two-characters-using-javascript"},{"id":"-Mg4s_6pv-EM_sgBWWMV","title":"add Html Table rows data into JSON array Object (ok)","pathname":"/javascript/advanced/add-html-table-rows-data-into-json-array-object-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/44097281/add-html-table-rows-data-into-json-array-object"},{"id":"-MabJNMWrGjjZFv3Q7Vb","title":"lightGallery, lightgalleryjs, Lightbox (ok)","pathname":"/javascript/advanced/lightgallery-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.lightgalleryjs.com/docs/settings/"},{"id":"-MdApPDisxv-Gnh4e80i","title":"same height (ok)","pathname":"/javascript/advanced/same-height","siteSpaceId":"sitesp_xQRWC","description":"https://gist.github.com/filipecsweb/9c3649c7c8e4f8ed3d3e"},{"id":"-MfU27Sdfyk49O7sTQev","title":"Hình ảnh :(","pathname":"/javascript/advanced/hinh-anh","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MaBwWVu-LstcLwgDcbG","title":"============ Start serialize =============","pathname":"/javascript/advanced/start-serialize","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MaBwSPvHv8J0uvfKZvn","title":"jQuery serialize() Method (ok)","pathname":"/javascript/advanced/jquery-serialize-method-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax_serialize"},{"id":"-MaC3alE6lWECHIJdoaB","title":"serialize width php mysql (ok)","pathname":"/javascript/advanced/serialize-width-php-mysql-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"qHiAOrl1xzOHV50KeFeo","title":"serialize, serializeObject, serializeArray (ok)","pathname":"/javascript/advanced/serialize-serializeobject-serializearray-ok","siteSpaceId":"sitesp_xQRWC","description":"http://jsfiddle.net/rFzyQ/"},{"id":"kD7DurzRgVh7ar9URI7d","title":"How to access jQuery serialized data? (ok)","pathname":"/javascript/advanced/how-to-access-jquery-serialized-data-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MaBw_zXQ60Fi26uzJc0","title":"============ End serialize =============","pathname":"/javascript/advanced/end-serialize","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M_i0ri_wfU37DBuvA1V","title":"Sử dụng addQueryVar để thêm vào đường dẫn ajax (ok)","pathname":"/javascript/advanced/su-dung-addqueryvar-de-them-vao-duong-dan-ajax-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M_7D06v35L2IKOxqi8c","title":"Cách tích hợp captcha style2.track360.xyz (ok)","pathname":"/javascript/advanced/cach-tich-hop-captcha-style2.track360.xyz-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M_7W-DHLRTsgMc_84i-","title":"Simple JavaScript Captcha Example (Client Side Captcha)","pathname":"/javascript/advanced/simple-javascript-captcha-example-client-side-captcha","siteSpaceId":"sitesp_xQRWC","description":"https://jharaphula.com/simple-javascript-captcha-example/"},{"id":"EAEW5su3SCTvXFPHMdE4","title":"Đoạn mã sử dụng translate.google.com (ok)","pathname":"/javascript/advanced/doan-ma-su-dung-translate.google.com-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d"},{"id":"-MZdX-c1bHMQNTTjrk3_","title":"========== Start [MultiLang] ===========","pathname":"/javascript/advanced/start-multilang","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MZcvDaOaGQG7ZXIVRt5","title":"[MultiLang] MultiLang.js (ok)","pathname":"/javascript/advanced/multilang-multilang.js-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/BdR76/MultiLanguage"},{"id":"-MZdULvmXviqum6O34Kt","title":"[MultiLang] Localizing JavaScript apps with jQuery.i18n (ok) (full)","pathname":"/javascript/advanced/multilang-localizing-javascript-apps-with-jquery.i18n-ok-full","siteSpaceId":"sitesp_xQRWC","description":"https://betterprogramming.pub/how-to-do-javascript-localization-with-jquery-i18n-1320ff5d7a4e"},{"id":"-MZdFB5uDkgfKAbFOlnG","title":"[MultiLang] jQuery i18n những điều nên biết (ok)","pathname":"/javascript/advanced/multilang-jquery-i18n-nhung-dieu-nen-biet-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/jquery-i18n-nhung-dieu-nen-biet-Ljy5VQXylra"},{"id":"-MZcxOufwf4qszqdtBFN","title":"[MultiLang] How to Create a Multilingual Application using JavaScript","pathname":"/javascript/advanced/multilang-how-to-create-a-multilingual-application-using-javascript","siteSpaceId":"sitesp_xQRWC","description":"https://www.codeproject.com/Tips/1165561/How-to-Create-a-Multilingual-Application-using-Jav"},{"id":"-MZd-wi_FJu3BD9SwbBM","title":"[MultiLang] Build multiple language website using jQuery and JSON based methods (ok)","pathname":"/javascript/advanced/multilang-build-multiple-language-website-using-jquery-and-json-based-methods-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.semicolonworld.com/question/5357/build-multiple-language-website-using-jquery-and-json-based-methods"},{"id":"-MZd50FEC2VoFcaw7QFe","title":"[MultiLang] Switch Different Languages On The Webpage - jQuery multilang (ok)","pathname":"/javascript/advanced/multilang-switch-different-languages-on-the-webpage-jquery-multilang-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/Irrelon/jquery-lang-js"},{"id":"-MZd7Jnb5aKmU9f-h1yc","title":"[MultiLang] jquery-multilang (ok)","pathname":"/javascript/advanced/multilang-jquery-multilang-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/dakk/jquery-multilang"},{"id":"-MZdX5E0fX8uspiRr1wb","title":"========== End [MultiLang] ===========","pathname":"/javascript/advanced/end-multilang","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MU-nM4hfQ1P87BP6msl","title":"[MINICOLORS] jquery.minicolors (ok)","pathname":"/javascript/advanced/minicolors-jquery.minicolors-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/claviska/jquery-minicolors"},{"id":"-MYNjuWebsoynopzejWu","title":"jQuery - addClass ACTIVE--> set timeout --> cycle (ok)(online.vinmec.com)","pathname":"/javascript/advanced/jquery-addclass-active-greater-than-set-timeout-greater-than-cycle-ok-online.vinmec.com","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/5789621/jquery-addclass-active-set-timeout-cycle"},{"id":"-MW3_yRtSqSmb5bRCv_3","title":"WP Mapbox GL JS Settings key (ok)","pathname":"/javascript/advanced/wp-mapbox-gl-js-settings-key-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MW2bZFhP2nGMUgOzfSX","title":"Xử lý ảnh thiếu thuộc tính title, alt trên style2.track360.xyz (ok)","pathname":"/javascript/advanced/xu-ly-anh-thieu-thuoc-tinh-title-alt-tren-style2.track360.xyz-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MUA6RZqo2noOs8f8DrG","title":"Register your schema (ok)","pathname":"/javascript/advanced/register-your-schema-ok","siteSpaceId":"sitesp_xQRWC","description":"https://studio.apollographql.com/org/testgraphlionel/graphs?overlay=publish-your-schema&serviceId=My-Graph-ti2q19"},{"id":"-MVodc0zCAy05JdawGxR","title":"========= Start Learn Graphql Website =======","pathname":"/javascript/advanced/start-learn-graphql-website","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MVodrEamY_afD-Z8t68","title":"1. Query and Mutation types","pathname":"/javascript/advanced/1.-query-and-mutation-types","siteSpaceId":"sitesp_xQRWC","description":"http://webonyx.github.io/graphql-php/type-system/schema/"},{"id":"-MVodklqaq-xrwNX4bJn","title":"========= End Learn Graphql Website =======","pathname":"/javascript/advanced/end-learn-graphql-website","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MUHvI1Ndkm5QCq7X_SZ","title":"[GRAPHQL] Tạo Database với Mysql (ok)","pathname":"/javascript/advanced/graphql-tao-database-voi-mysql-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MUHw97-A_yXjzO-ryBD","title":"KẾT NỐI VỚI MYSQL – NODEJS – 05","pathname":"/javascript/advanced/ket-noi-voi-mysql-nodejs-05","siteSpaceId":"sitesp_xQRWC","description":"https://landolatui.wordpress.com/2016/06/06/ket-noi-voi-mysql-nodejs-05/"},{"id":"-MUHO-Podb_tkGz_o8p8","title":"Quick start graphql (ok)","pathname":"/javascript/advanced/quick-start-graphql","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://github.com/orinamio/graphql-express-nodejs"},{"id":"-MUHOCsSrQnYJRqF6TsU","title":"Hướng dẫn bắt đầu GraphQL với Node.js (Phần 1)","pathname":"/javascript/advanced/huong-dan-bat-dau-graphql-voi-node.js-phan-1","siteSpaceId":"sitesp_xQRWC","description":"https://topdev.vn/blog/huong-dan-bat-dau-graphql-voi-node-js/"},{"id":"-MUHOH1hT7SXRvsyuGL-","title":"Hướng dẫn bắt đầu GraphQL với Node.js (Phần 2)","pathname":"/javascript/advanced/huong-dan-bat-dau-graphql-voi-node.js-phan-2","siteSpaceId":"sitesp_xQRWC","description":"https://topdev.vn/blog/huong-dan-bat-dau-graphql-voi-node-js-phan-2/"},{"id":"-MUHOVOCB2Ee-YlJ6aY0","title":"Cách bắt đầu với ứng dụng GraphQL, React, Apollo Client và Apollo Server","pathname":"/javascript/advanced/cach-bat-dau-voi-ung-dung-graphql-react-apollo-client-va-apollo-server","siteSpaceId":"sitesp_xQRWC","description":"https://ichi.pro/vi/cach-bat-dau-voi-ung-dung-graphql-react-apollo-client-va-apollo-server-70633607821313"},{"id":"-MUHM2jWqOm-OQwGHRDs","title":"[Fullstack] Xây dựng forum bằng GraphQL, React, Apollo và Prisma - Part 1 (Application Introduction","pathname":"/javascript/advanced/fullstack-xay-dung-forum-bang-graphql-react-apollo-va-prisma-part-1-application-introduction","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/fullstack-xay-dung-forum-bang-graphql-react-apollo-va-prisma-part-1-application-introduction-and-technologies-overview-vyDZODARlwj"},{"id":"-MUHM5oRFZ0hjNxofjRt","title":"[Fullstack] Xây dựng forum bằng GraphQL, React, Apollo và Prisma - Part 2 (Backend - Project Setup a","pathname":"/javascript/advanced/fullstack-xay-dung-forum-bang-graphql-react-apollo-va-prisma-part-2-backend-project-setup-a","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://viblo.asia/p/fullstack-xay-dung-forum-bang-graphql-react-apollo-va-prisma-part-2-backend-project-setup-and-graphql-query-ByEZkv82KQ0"},{"id":"iuG8SuhQGefRR2iEwtGz","title":"[Fullstack] Xây dựng forum bằng GraphQL, React, Apollo và Prisma - Part 3 (Backend - Simple Mutation","pathname":"/javascript/advanced/fullstack-xay-dung-forum-bang-graphql-react-apollo-va-prisma-part-3-backend-simple-mutation","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/fullstack-xay-dung-forum-bang-graphql-react-apollo-va-prisma-part-3-backend-simple-mutation-924lJExXZPM"},{"id":"lPSmxx5FeQQ4YFNN2ZEd","title":"[Fullstack] Xây dựng forum bằng GraphQL, React, Apollo và Prisma - Part 4 (Backend - Connect to Data","pathname":"/javascript/advanced/fullstack-xay-dung-forum-bang-graphql-react-apollo-va-prisma-part-4-backend-connect-to-data","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/fullstack-xay-dung-forum-bang-graphql-react-apollo-va-prisma-part-4-backend-connect-to-database-gDVK29dr5Lj"},{"id":"emiejJtxNqX5vrtg9Nt1","title":"Prisma Crud Full","pathname":"/javascript/advanced/prisma-crud-full","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://www.prisma.io/docs/orm/prisma-client/queries/crud Or https://graphql.org/learn"},{"id":"AJOHGtsAC0KfQ9U5SzZ0","title":"Sử dụng kết hợp prisma.io với wordpress như nào?","pathname":"/javascript/advanced/prisma-crud-full/su-dung-ket-hop-prisma.io-voi-wordpress-nhu-nao","siteSpaceId":"sitesp_xQRWC","emoji":"1f970","breadcrumbs":[{"label":"Prisma Crud Full","emoji":"1f60d"}]},{"id":"2LKc2tdeXPIueLch3zja","title":"[ERROR] gặp lỗi TypeError: Do not know how to serialize a BigInt (ok)","pathname":"/javascript/advanced/prisma-crud-full/error-gap-loi-typeerror-do-not-know-how-to-serialize-a-bigint-ok","siteSpaceId":"sitesp_xQRWC","breadcrumbs":[{"label":"Prisma Crud Full","emoji":"1f60d"}]},{"id":"ZxnSHrNJpfm17EHn2tcc","title":"Migrate MongoDB to MySQL using Prism Key Differences (ok)","pathname":"/javascript/advanced/prisma-crud-full/migrate-mongodb-to-mysql-using-prism-key-differences-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://dev.to/raynecoder/migrate-mongodb-to-mysql-using-prism-key-differences-2ma5","breadcrumbs":[{"label":"Prisma Crud Full","emoji":"1f60d"}]},{"id":"rqNIUMBR3jBni5bfxrBI","title":"Setting Up Prisma with MySQL: A Step-by-Step Guid","pathname":"/javascript/advanced/setting-up-prisma-with-mysql-a-step-by-step-guid","siteSpaceId":"sitesp_xQRWC","description":"https://medium.com/@xuwei19850423/setting-up-prisma-with-mysql-a-step-by-step-guid-6a2bd872b985"},{"id":"-MUHMNe-AtuGJzFoqadq","title":"Tìm hiểu GraphQL, Xây dựng 1 GraphQL server với prisma","pathname":"/javascript/advanced/tim-hieu-graphql-xay-dung-1-graphql-server-voi-prisma","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-graphql-xay-dung-1-graphql-server-voi-prisma-yMnKM17zK7P"},{"id":"JEY0scaSppXIhpjnXabh","title":"Đã có bài viết về sqlite, sqlite3 đầy đủ (ok)","pathname":"/javascript/advanced/da-co-bai-viet-ve-sqlite-sqlite3-day-du-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f979","description":"https://learnreac.gitbook.io/project/nextjs/sqlite-su-dung-sqlite-migrations-ok"},{"id":"cyrw9nhpQ9Rp41FAJtYN","title":"Querying Sequelize Full link sequelize.org (ok)","pathname":"/javascript/advanced/querying-sequelize-full-link-sequelize.org-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://sequelize.org/docs/v7/category/querying/"},{"id":"lfVwk5y9fkGsc1qaV362","title":"Sqlite Sequelize  Example (ok)","pathname":"/javascript/advanced/sqlite-sequelize-example-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f601","description":"Chú ý bạn phải cài cả sqlite3 vì Sequelize  cần nó 😒"},{"id":"sWL3J8zo5ou2wFGXksDM","title":"CRUD with React and GraphQL Mysql (ok)","pathname":"/javascript/advanced/crud-with-react-and-graphql-mysql-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://blog.logrocket.com/crud-react-graphql-examples/"},{"id":"TlTrdNUBaojbUSKGv60i","title":"A GraphQL Sqlite, sequelize Full (ok)","pathname":"/javascript/advanced/a-graphql-sqlite-sequelize-full-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://sequelize.org/docs/v7/category/querying/"},{"id":"-MUHMwKBnCZpvUeRpO4q","title":"GraphQL in practice - Part 1: Xây dựng GraphQL server với Apollo Server, ExpressJS và MongoDB","pathname":"/javascript/advanced/graphql-in-practice-part-1-xay-dung-graphql-server-voi-apollo-server-expressjs-va-mongodb","siteSpaceId":"sitesp_xQRWC","description":"https://www.juliandong.com/2018/12/graphql-in-practice-part-1-xay-dung.html"},{"id":"-MUHN3bRh5gTEHzaNGF8","title":"GraphQL in practice - Part 2: Tạo ứng dụng GraphQL với Apollo Client và React","pathname":"/javascript/advanced/graphql-in-practice-part-2-tao-ung-dung-graphql-voi-apollo-client-va-react","siteSpaceId":"sitesp_xQRWC","description":"https://www.juliandong.com/2018/12/graphql-in-practice-part-2-tao-ung-dung.html"},{"id":"-MUHNA8SnAQpqarEy5nf","title":"GraphQL in practice - Part 2: Tạo ứng dụng GraphQL với Apollo Client và React","pathname":"/javascript/advanced/graphql-in-practice-part-2-tao-ung-dung-graphql-voi-apollo-client-va-react-1","siteSpaceId":"sitesp_xQRWC","description":"https://www.juliandong.com/2018/12/graphql-in-practice-part-2-tao-ung-dung.html"},{"id":"-MUHNIyxT5xv979aQXdm","title":"TÌm hiểu về GraphQL","pathname":"/javascript/advanced/tim-hieu-ve-graphql","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-ve-graphql-eW65GD8RKDO"},{"id":"-MUHNPwrAxqK5aVy1WHM","title":"Cùng tìm hiểu về GraphQL","pathname":"/javascript/advanced/cung-tim-hieu-ve-graphql","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/cung-tim-hieu-ve-graphql-07LKX4zeKV4"},{"id":"-MUHN0GTWSW42vjDs7oc","title":"Simple Guidance For You In GraphQL","pathname":"/javascript/advanced/simple-guidance-for-you-in-graphql","siteSpaceId":"sitesp_xQRWC","description":"https://www.juliandong.com/2018/09/simple-guidance-for-you-in-graphql.html"},{"id":"-MU9BXrAoQWYQmxDuRjL","title":"[GRAPHQL] Get started with Apollo Server (ok)","pathname":"/javascript/advanced/graphql-get-started-with-apollo-server-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.apollographql.com/docs/apollo-server/getting-started/"},{"id":"-MU9V5J_8ox5j2Fx2QZv","title":"[GRAPHQL] Schema basics (ok)","pathname":"/javascript/advanced/graphql-schema-basics-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.apollographql.com/docs/apollo-server/schema/schema/"},{"id":"-MU9dmAFHNzXyjD8YzNZ","title":"[GRAPHQL] Subscriptions (ok)","pathname":"/javascript/advanced/graphql-subscriptions-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.apollographql.com/docs/apollo-server/data/subscriptions/"},{"id":"-MUAGS-k_6VIYb96pMjS","title":"[GRAPHQL] Unions and interfaces (ok)","pathname":"/javascript/advanced/graphql-unions-and-interfaces-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.apollographql.com/docs/apollo-server/schema/unions-interfaces/"},{"id":"-MUGxgaJ9GqF79k9EEKx","title":"Tham khảo: https://www.howtographql.com","pathname":"/javascript/advanced/tham-khao-https-www.howtographql.com","siteSpaceId":"sitesp_xQRWC","description":"https://www.howtographql.com"},{"id":"-MUGz318Xm3JKAef829Y","title":"Tìm hiểu GraphQL: Các khái niệm cơ bản (ok)","pathname":"/javascript/advanced/tim-hieu-graphql-cac-khai-niem-co-ban-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-graphql-phan-2-cac-khai-niem-co-ban-gAm5yROLKdb"},{"id":"-MUH2acCnps2KS5rYAvE","title":"GraphQL Và Ưu Điểm Nổi Bật So Với Rest API?","pathname":"/javascript/advanced/graphql-va-uu-diem-noi-bat-so-voi-rest-api","siteSpaceId":"sitesp_xQRWC","description":"https://codelearn.io/sharing/graphql-va-uu-diem-so-voi-rest-api"},{"id":"-MUH4RFGKmn2kSD7-lUH","title":"Xây dựng server GraphQL với NodeJS (ok)","pathname":"/javascript/advanced/xay-dung-server-graphql-voi-nodejs-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/xay-dung-server-graphql-voi-nodejs-Qpmle22N5rd"},{"id":"-MUH5nlESfXI1zCabQtP","title":"Tìm hiểu GraphQL","pathname":"/javascript/advanced/tim-hieu-graphql","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-graphql-L4x5xpVm5BM"},{"id":"-MUH69p8RE13NJ3qfUB0","title":"Xây dựng GraphQL server với Node.js","pathname":"/javascript/advanced/xay-dung-graphql-server-voi-node.js","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/xay-dung-graphql-server-voi-nodejs-Az45bn4o5xY"},{"id":"-MUH6XwVPOZq0Yaof6ry","title":"Ví dụ Tạo Restfull API - CRUD đơn giản với NodeJS, GraphQL (ok)","pathname":"/javascript/advanced/tao-restfull-api-crud-don-gian-voi-nodejs-graphql","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tao-restfull-api-crud-don-gian-voi-nodejs-graphql-aWj53W9G56m"},{"id":"-MUI9wF7sC1rsFgIlpWB","title":"Sequelize with Node, Express & Mysql and it’s setup (ok)","pathname":"/javascript/advanced/sequelize-with-node-express-and-mysql-and-its-setup-ok","siteSpaceId":"sitesp_xQRWC","description":"https://medium.com/@irshad.vali/sequelize-with-node-express-mysql-and-its-setup-ae69f0c02df7"},{"id":"-MUHCwClm5h5DJuLPj8_","title":"Sequelize in Nodejs Part I","pathname":"/javascript/advanced/sequelize-in-nodejs-part-i","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/sequelize-in-nodejs-part-i-m68Z0VgX5kG"},{"id":"-MUHD0QGUAmToW5ol7q8","title":"Sequelize in Nodejs Part II","pathname":"/javascript/advanced/sequelize-in-nodejs-part-ii","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/sequelize-in-nodejs-part-ii-Qpmled2kZrd"},{"id":"-MUHIZ_sQgHxrl7H86V1","title":"Videos NodeJS + MySQL Database","pathname":"/javascript/advanced/videos-nodejs-+-mysql-database","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MUHK3pJlz3us-ouIe2t","title":"NodeJS – Lưu trữ dữ liệu trên MySQL với Sequelize","pathname":"/javascript/advanced/nodejs-luu-tru-du-lieu-tren-mysql-voi-sequelize","siteSpaceId":"sitesp_xQRWC","description":"https://phocode.com/javascript/nodejs/nodejs-luu-tru-du-lieu-voi-mysql-voi-sequelize/"},{"id":"-MUHKEUJFrwowWEEyo-X","title":"Exploring The Node.js With MySQL Example Using Sequelize & Express","pathname":"/javascript/advanced/exploring-the-node.js-with-mysql-example-using-sequelize-and-express","siteSpaceId":"sitesp_xQRWC","description":"https://www.esparkinfo.com/node-js-with-mysql-using-sequelize-express.html"},{"id":"-MUHKMy1SDJdeFS0lUKN","title":"Tạo model, migration, seeds với Sequelize","pathname":"/javascript/advanced/tao-model-migration-seeds-voi-sequelize","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tao-model-migration-seeds-voi-sequelize-1VgZvOXplAw"},{"id":"-MUHKqvo_p7UqznTIMZF","title":"Sử dụng passport với sequelize và MySQL","pathname":"/javascript/advanced/su-dung-passport-voi-sequelize-va-mysql","siteSpaceId":"sitesp_xQRWC","description":"https://code.tutsplus.com/vi/tutorials/using-passport-with-sequelize-and-mysql--cms-27537"},{"id":"-MUHLBxw16nLzn8m1hz9","title":"Tạo model, migration, seeds với Sequelize","pathname":"/javascript/advanced/tao-model-migration-seeds-voi-sequelize-1","siteSpaceId":"sitesp_xQRWC","description":"https://itzone.com.vn/vi/article/tao-model-migration-seeds-voi-sequelize/"},{"id":"-MUHLRU_jRj9k5lJKuen","title":"GraphQL là gì? Bắt đầu với GraphQL","pathname":"/javascript/advanced/graphql-la-gi-bat-dau-voi-graphql","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/graphql-la-gi-bat-dau-voi-graphql-gDVK2nX0KLj"},{"id":"-MUHLjbe_eMaTchEl5s8","title":"Xây dựng API sử dụng Laravel và GraphQL","pathname":"/javascript/advanced/xay-dung-api-su-dung-laravel-va-graphql","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/xay-dung-api-su-dung-laravel-va-graphql-4P856aOLlY3"},{"id":"-MUHJA1lRnHbiWcM2Vs6","title":"How To Connect To MySql Database Using Sequlize In Express (Node) Application","pathname":"/javascript/advanced/how-to-connect-to-mysql-database-using-sequlize-in-express-node-application","siteSpaceId":"sitesp_xQRWC","description":"https://www.c-sharpcorner.com/blogs/how-to-connect-to-mysql-database-using-sequlize-in-express-node-application"},{"id":"-MUHJNOF9m5kKdgWI2rK","title":"Node.js MySQL Tutorial","pathname":"/javascript/advanced/node.js-mysql-tutorial","siteSpaceId":"sitesp_xQRWC","description":"https://codeforgeek.com/nodejs-mysql-tutorial/"},{"id":"-MUHJZmIYpyrWbECapJa","title":"Node.js Rest APIs example with Express, Sequelize & MySQL","pathname":"/javascript/advanced/node.js-rest-apis-example-with-express-sequelize-and-mysql","siteSpaceId":"sitesp_xQRWC","description":"https://bezkoder.com/node-js-express-sequelize-mysql/"},{"id":"-MUHJnbgU9uE1c_PYRhf","title":"Getting Started with Node, Express and Mysql Using Sequelize","pathname":"/javascript/advanced/getting-started-with-node-express-and-mysql-using-sequelize","siteSpaceId":"sitesp_xQRWC","description":"https://medium.com/@prajramesh93/getting-started-with-node-express-and-mysql-using-sequelize-ed1225afc3e0"},{"id":"-MU8AyvaXU7Q5SRdNbBw","title":"[GRAPHQL] GraphQL – Công nghệ mới cho web developer","pathname":"/javascript/advanced/graphql-graphql-cong-nghe-moi-cho-web-developer","siteSpaceId":"sitesp_xQRWC","description":"https://topdev.vn/blog/graphql/"},{"id":"-MUAIzcS0iYut0hciBhK","title":"GraphQL là gì? Tìm hiểu về GraphQL (ok)","pathname":"/javascript/advanced/graphql-la-gi-tim-hieu-ve-graphql","siteSpaceId":"sitesp_xQRWC","description":"https://lehuuquangvinh.medium.com/graphql-l%C3%A0-g%C3%AC-t%C3%ACm-hi%E1%BB%83u-v%E1%BB%81-graphql-e5e49b5f1b75"},{"id":"-MU8U1GusvLEm0pT1tzv","title":"[GRAPHQL] Cùng tìm hiểu về GraphQL","pathname":"/javascript/advanced/graphql-cung-tim-hieu-ve-graphql","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/cung-tim-hieu-ve-graphql-07LKX4zeKV4"},{"id":"-MSYx7Kb5YUJ89NYEDm7","title":"Điều gì ẩn chứa bên trong $.event???","pathname":"/javascript/advanced/dieu-gi-an-chua-ben-trong-usd.event","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MTAm9OU2GeiKHxa0VzF","title":"===== Start Put JavaScript Design Patterns Into Practice (Videos) ========","pathname":"/javascript/advanced/start-put-javascript-design-patterns-into-practice-videos","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MTAmPPqlpGH0rGjetfK","title":"2.1. The Factory Pattern (ok)","pathname":"/javascript/advanced/2.1.-the-factory-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MTC-E5zXWVRJr8sK_TK","title":"3.1. The Publisher-Subscriber Pattern (ok)","pathname":"/javascript/advanced/3.1.-the-publisher-subscriber-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":"Có chỉnh sửa để dễ hiểu hơn :)"},{"id":"-MTC24SIZ9cAd1z-jdiz","title":"3.2. The Strategy Pattern (ok)","pathname":"/javascript/advanced/3.2.-the-strategy-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MTRIct8bBMxNsf8Q-FN","title":"Rời phần thử khỏi mảng sử dụng filter (ok)","pathname":"/javascript/advanced/roi-phan-thu-khoi-mang-su-dung-filter-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MTC4u4b6K7QlitY7nod","title":"3.3. The Observer Pattern (ok)","pathname":"/javascript/advanced/3.3.-the-observer-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MTRLaHVr1AlHPFuerbY","title":"3.4. The Chain of Responsibility Pattern (ok)","pathname":"/javascript/advanced/3.4.-the-chain-of-responsibility-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MTRObv15aSG0L_Qh8Jv","title":"3.5. The Mediator Pattern (ok)","pathname":"/javascript/advanced/3.5.-the-mediator-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MTRQScccJKgcz5U9SFa","title":"3.6. The Iterator Pattern  (ok)","pathname":"/javascript/advanced/3.6.-the-iterator-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MTAmIBTAmb3b3hkgVxP","title":"===== End Put JavaScript Design Patterns Into Practice (Videos) ========","pathname":"/javascript/advanced/end-put-javascript-design-patterns-into-practice-videos","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MT9AqlT7sp1Qsua3l-X","title":"========== Start RequireJS Tutorial =======","pathname":"/javascript/advanced/start-requirejs-tutorial","siteSpaceId":"sitesp_xQRWC","description":"https://www.tutorialspoint.com/requirejs/requirejs_overview.htm"},{"id":"-MT6ppKuvii8WmitUhH1","title":"Sử dụng RequireJS và AMD để module hóa code JavaScript (ok)","pathname":"/javascript/advanced/start-requirejs-tutorial/su-dung-requirejs-va-amd-de-module-hoa-code-javascript","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/su-dung-requirejs-va-amd-de-module-hoa-code-javascript-znVGLY6jvZOe","breadcrumbs":[{"label":"========== Start RequireJS Tutorial ======="}]},{"id":"nw9XNVi3JpwrtVYCE9IU","title":"Trình duyệt không có require, nhưng Node.js thì có. Với Browserify để trình duyệt cũng có (ok)","pathname":"/javascript/advanced/trinh-duyet-khong-co-require-nhung-node.js-thi-co.-voi-browserify-de-trinh-duyet-cung-co-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f60d","description":"https://browserify.org/"},{"id":"-MT6jfpM7JYiZyZlctHP","title":"Sử dụng Bower để quản lý các thư viện code trong Laravel (ok)","pathname":"/javascript/advanced/untitled-2","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MT9CMqxUKu9bUgeYFhV","title":"RequireJS - Environment Setup (ok)","pathname":"/javascript/advanced/requirejs-environment-setup-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.tutorialspoint.com/requirejs/requirejs_environment_setup.htm"},{"id":"-MT9ChS0yq_Jqc1DvkT1","title":"RequireJS - Configuration (ok)","pathname":"/javascript/advanced/requirejs-configuration-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.tutorialspoint.com/requirejs/requirejs_configuration.htm"},{"id":"-MT9EnHEABNtTjTCo2-P","title":"RequireJS - AMD Modules (ok)","pathname":"/javascript/advanced/requirejs-amd-modules-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.tutorialspoint.com/requirejs/requirejs_amd_modules.htm"},{"id":"-MT9GsMmGXSf2H5u4wmf","title":"RequireJS - Defining Function (cách sử dụng require rất lạ) (ok)","pathname":"/javascript/advanced/requirejs-defining-function","siteSpaceId":"sitesp_xQRWC","description":"https://www.tutorialspoint.com/requirejs/requirejs_defining_function.htm"},{"id":"-MTA5hqodeGfWNdONZbA","title":"RequireJS - Optimizer (ok)","pathname":"/javascript/advanced/requirejs-optimizer-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.tutorialspoint.com/requirejs/requirejs_optimizer.htm"},{"id":"-MT9Au_y8MSsRvkU2Zy2","title":"========== End RequireJS Tutorial =======","pathname":"/javascript/advanced/end-requirejs-tutorial","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MSSSZsNAPqmrAy7atYO","title":"========== Start jQuery Ui ======","pathname":"/javascript/advanced/start-jquery-ui","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"FYauyzPukrpdAZiHyUle","title":"Jquery Datepicker select multiple date ranges in one calender, button Reset (ok)","pathname":"/javascript/advanced/jquery-datepicker-select-multiple-date-ranges-in-one-calender-button-reset-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/43464228/jquery-datepicker-select-multiple-date-ranges-in-one-calender"},{"id":"09VPRCvLZ73Rf6876Hu4","title":"Tạo chức năng tự động hoàn tất nhập liệu với thư viện jQuery UI Autocomplete (Phần 1) (ok)","pathname":"/javascript/advanced/tao-chuc-nang-tu-dong-hoan-tat-nhap-lieu-voi-thu-vien-jquery-ui-autocomplete-phan-1-ok","siteSpaceId":"sitesp_xQRWC","description":"https://javascriptuse.gitbook.io/project/tao-chuc-nang-tu-dong-hoan-tat-nhap-lieu-voi-thu-vien-jquery-ui-autocomplete"},{"id":"-MSE5XmtNv3fGV4CmUDM","title":"Draggable  Widget, Droppable Widget (ok)","pathname":"/javascript/advanced/draggable-widget-droppable-widget-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MSNuj8Xz0MxcS761LU7","title":"jQuery drag and drop (kéo thả bằng jQuery)","pathname":"/javascript/advanced/jquery-drag-and-drop-keo-tha-bang-jquery","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/jquery-drag-and-drop-keo-tha-bang-jquery-gAm5yXnLldb"},{"id":"-MSO0hcJw9uKvJmQqbC3","title":"jQuery drag full (ok)","pathname":"/javascript/advanced/jquery-drag-and-drop","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MSOED8inQdIB37uP_oS","title":"jQuery drop full (ok)","pathname":"/javascript/advanced/jquery-drop-full-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MSRy-U-wcLy3up_10rz","title":"jQuery Resizable full (ok)","pathname":"/javascript/advanced/jquery-resizable-full-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"9RhlXmkwyefFhtyTuPmR","title":"Tablesorter full (ok)","pathname":"/javascript/advanced/tablesorter-full-ok","siteSpaceId":"sitesp_xQRWC","description":"https://plugins.jquery.com/tablesorter/"},{"id":"6S9UE4eMzzafnsvMfZkx","title":"Live search through table rows (ok)","pathname":"/javascript/advanced/live-search-through-table-rows-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/12433304/live-search-through-table-rows"},{"id":"BwckOx2AeGLtJQIucMIO","title":"Loại bỏ một số cột không tìm kiếm trong Tablesorter (ok)","pathname":"/javascript/advanced/loai-bo-mot-so-cot-khong-tim-kiem-trong-tablesorter-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MSS8OlkbAJILuWcIbzT","title":"jQuery Sortable full, tablesorter (ok)","pathname":"/javascript/advanced/jquery-sortable-full-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MSSL2JFpiNlR5YI231v","title":"jQuery Selectable full (ok)","pathname":"/javascript/advanced/jquery-selectable-full-ok","siteSpaceId":"sitesp_xQRWC","description":"https://jqueryui.com/selectable"},{"id":"-MSRwN4HR_YLd-EXicIZ","title":"jQuery UI Sortable Tutorial - Save Positions With Ajax & PHP & MySQL (ok)","pathname":"/javascript/advanced/jquery-ui-sortable-tutorial-save-positions-with-ajax-and-php-and-mysql-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@lernphp/s/project/jquery-ui-sortable-tutorial-save-positions-with-ajax-and-php-and-mysql-ok"},{"id":"-MSRwRwKUQg_vyphOtQZ","title":"jQuery Drag and Drop TODO List with PHP MySQL (ok)","pathname":"/javascript/advanced/jquery-drag-and-drop-todo-list-with-php-mysql-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@lernphp/s/project/jquery-drag-and-drop-todo-list-with-php-mysql-ok"},{"id":"-MSSSfPeHkFNGyXbLGKO","title":"========== End jQuery Ui ======","pathname":"/javascript/advanced/end-jquery-ui","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS7znNn7ozh8onKz8P-","title":"[TUTORIAL] TRÍCH XUẤT THÔNG TIN TỪ WEBSITE VỚI HTML AGLITITY PACK","pathname":"/javascript/advanced/tutorial-trich-xuat-thong-tin-tu-website-voi-html-aglitity-pack","siteSpaceId":"sitesp_xQRWC","description":"https://toidicodedao.com/2015/07/28/tutorial-trich-xuat-thong-tin-tu-website-voi-html-aglitity-pack/?fbclid=IwAR0dEkLYGrghj8Nwq4N_Qn9u1pBQ_kzXTkKUVBkW9zMmN8V_39KHw_QsS_Y"},{"id":"-MS7JWcbOHtK7DvpyB4y","title":"======== Start handlebars js =======","pathname":"/javascript/advanced/start-handlebars-js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS7Jg-LrfopoGbMhCVC","title":"Sử dụng handlebars js","pathname":"/javascript/advanced/su-dung-handlebars-js","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/su-dung-handlebars-js-naQZRJP0Zvx"},{"id":"-MS7JwYa2bunu12YgyG-","title":"Handlebars nhỏ nhưng có võ","pathname":"/javascript/advanced/handlebars-nho-nhung-co-vo","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/handlebars-nho-nhung-co-vo-MgNvWXbaGYx"},{"id":"-MS7JaSr-w3Mt4FnoKDT","title":"======== End handlebars js =======","pathname":"/javascript/advanced/end-handlebars-js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3opviz8L8c9ErieyO","title":"==== Start JavaScript Tutorial ====","pathname":"/javascript/advanced/start-javascript-tutorial","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3p02ij9zX8eAeogOV","title":"JavaScript Introduction","pathname":"/javascript/advanced/javascript-introduction","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript"},{"id":"-MS3p8nLQ-SpVenfpEnz","title":"What is JavaScript","pathname":"/javascript/advanced/what-is-javascript","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/what-is"},{"id":"-MS3pH17oA2BNO7It0SG","title":"JavaScript Essentials","pathname":"/javascript/advanced/javascript-essentials","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/essentials"},{"id":"-MS3pNRQ0koynFO3A9Wm","title":"JavaScript Variables","pathname":"/javascript/advanced/javascript-variables","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/variables"},{"id":"-MS3pUUy4soZvWUJGr7m","title":"JavaScript Operators","pathname":"/javascript/advanced/javascript-operators","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/operators"},{"id":"-MS3p_C6UwJ25rkzC4jn","title":"JavaScript Conditionals","pathname":"/javascript/advanced/javascript-conditionals","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/conditionals"},{"id":"-MS3pediu3BOpMi9Yfga","title":"JavaScript Loops","pathname":"/javascript/advanced/javascript-loops","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/loops"},{"id":"-MS3pk_ilJ462bQNTWq0","title":"JavaScript Built-in Types","pathname":"/javascript/advanced/javascript-built-in-types","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/builtin-types"},{"id":"-MS3praTRxPDJL4Q2eoH","title":"JavaScript Objects","pathname":"/javascript/advanced/javascript-objects","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/objects"},{"id":"-MS3q-Tk_EhwlIbcXMi-","title":"JS Advanced Objects","pathname":"/javascript/advanced/js-advanced-objects","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/advanced-objects"},{"id":"-MS3q5bE1TevaHfW3nbP","title":"JavaScript Arrays","pathname":"/javascript/advanced/javascript-arrays","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/arrays"},{"id":"-MS3qBmdixAVi95l7baa","title":"JavaScript Functions","pathname":"/javascript/advanced/javascript-functions","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/functions"},{"id":"-MS3qHlaKyxHez1FDsP4","title":"JavaScript Function Objects","pathname":"/javascript/advanced/javascript-function-objects","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/function-objects"},{"id":"-MS3qNQszargkNB-1fHy","title":"JavaScript JSON","pathname":"/javascript/advanced/javascript-json","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/json"},{"id":"-MS3qUE6w3fL8JuPUNg-","title":"JavaScript Regular Expressions","pathname":"/javascript/advanced/javascript-regular-expressions","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/regular-expressions"},{"id":"-Mgo-p6Rtg94TJywWNQv","title":"Bôi màu cho một ký tự đặc biệt và chuỗi @EsportsArcadia Regular Expression (ok)","pathname":"/javascript/advanced/boi-mau-cho-mot-ky-tu-dac-biet-va-chuoi-esportsarcadia-regular-expression-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3qkUElY_1FUlwZ8Lx","title":"JavaScript Reference","pathname":"/javascript/advanced/javascript-reference","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/reference"},{"id":"-MS3ov5_kLrZGQy_WILk","title":"==== End JavaScript Tutorial ====","pathname":"/javascript/advanced/end-javascript-tutorial","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3lZ7pn3Ah0GwrAmaG","title":"===== Start JavaScript Design Patterns ==","pathname":"/javascript/advanced/start-javascript-design-patterns","siteSpaceId":"sitesp_xQRWC","emoji":"1f9d0","description":""},{"id":"-MS3qZfoBcRdJzKj4kNc","title":"JavaScript Design Patterns","pathname":"/javascript/advanced/javascript-design-patterns-1","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns"},{"id":"G3U0K31z7wqXsTN5TrR7","title":"JavaScript Design Patterns – Explained with Examples","pathname":"/javascript/advanced/javascript-design-patterns-explained-with-examples","siteSpaceId":"sitesp_xQRWC","description":"https://www.freecodecamp.org/news/javascript-design-patterns-explained/"},{"id":"-MSBJv6GcTblnur5qySe","title":"Js design pattern doFactory master (ok)","pathname":"/javascript/advanced/js-design-pattern-dofactory-master-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/victorpaulo/js-design-pattern-doFactory"},{"id":"-MSBb9m8cRwh73Q6jiym","title":"Chapter 5: jQuery Patterns","pathname":"/javascript/advanced/chapter-5-jquery-patterns","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/products/dofactory-js"},{"id":"-MS3lehSbaZOgLFuZkYX","title":"JavaScript Design Patterns (ok)","pathname":"/javascript/advanced/javascript-design-patterns","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns"},{"id":"-MS3loc5607z9A8_qqNf","title":"Abstract Factory (ok)","pathname":"/javascript/advanced/abstract-factory","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/abstract-factory"},{"id":"-MS3lviizx5JMTELoFC0","title":"Builder (ok)","pathname":"/javascript/advanced/builder","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/builder"},{"id":"-MS3m17LSuPzRsCe7eQ3","title":"Factory Method (ok)","pathname":"/javascript/advanced/factory-method","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/factory-method"},{"id":"-MS3m6GLjiVSYilmqVw3","title":"Prototype (ok)","pathname":"/javascript/advanced/prototype","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/prototype"},{"id":"-MS3mB3t2EKPgigvihY0","title":"Singleton (ok)","pathname":"/javascript/advanced/singleton","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/singleton"},{"id":"-MS3mFpTesir7WnEAQUR","title":"Adapter ( ok)","pathname":"/javascript/advanced/adapter","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/adapter"},{"id":"-MS3mKny7fSMMYjB9gpC","title":"Bridge (ok)","pathname":"/javascript/advanced/bridge","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/bridge"},{"id":"-MS3mQFcsCd-HnsmfJ6L","title":"Composite (ok)","pathname":"/javascript/advanced/composite","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/composite"},{"id":"-MS3mWLW4G8xMGLJzyC4","title":"Decorator (ok)","pathname":"/javascript/advanced/decorator","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/decorator"},{"id":"-MS3mbe5TptBIKF0aST9","title":"Facade (ok)","pathname":"/javascript/advanced/facade","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/facade"},{"id":"-MS3mgsDBgF5n64S8888","title":"Flyweight (ok)","pathname":"/javascript/advanced/flyweight","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/flyweight"},{"id":"-MS3mmc4eftoxOzuvuTu","title":"Proxy (ok)","pathname":"/javascript/advanced/proxy","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/proxy"},{"id":"-MS3mrjDpc9vKOf-88Ie","title":"Chain of Responsibility (ok)","pathname":"/javascript/advanced/chain-of-responsibility","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/chain-of-responsibility"},{"id":"-MS3mwViRYHIxMXCtV3i","title":"Command (ok)","pathname":"/javascript/advanced/command","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/command"},{"id":"-MS3n2lEa0JS_GW4v-ec","title":"Interpreter (ok)","pathname":"/javascript/advanced/interpreter","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/interpreter"},{"id":"-MS3n7hbD2X07HmLyHAQ","title":"Iterator (ok)","pathname":"/javascript/advanced/iterator","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/iterator"},{"id":"-MS3nD4EL31DoRCI3nrG","title":"Mediator (ok)","pathname":"/javascript/advanced/mediator","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/mediator"},{"id":"-MS3nIBKFVAlps4QCT9v","title":"Memento (ok)","pathname":"/javascript/advanced/memento","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/memento"},{"id":"-MS3nND5Chp7mSZCkmhK","title":"Observer (ok)","pathname":"/javascript/advanced/observer","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/observer"},{"id":"-MS3nSDKLeY2GDzARDC4","title":"State (ok)","pathname":"/javascript/advanced/state","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/state"},{"id":"-MS3nXLqVsdcPTKiYP4r","title":"Strategy (ok)","pathname":"/javascript/advanced/strategy","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/strategy"},{"id":"-MS3nbzxJFd7pYa6LzNU","title":"Template Method (ok)","pathname":"/javascript/advanced/template-method","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/template-method"},{"id":"-MS3nhMyTpyOH7rhDwkE","title":"Visitor (ok)","pathname":"/javascript/advanced/visitor","siteSpaceId":"sitesp_xQRWC","description":"https://www.dofactory.com/javascript/design-patterns/visitor"},{"id":"-MS3lbthaCWT3fQQh69a","title":"===== End JavaScript Design Patterns ==","pathname":"/javascript/advanced/end-javascript-design-patterns","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1AM9wZM8_LoASCaLq","title":"======== Start Backbone.js Tutorial Videos ======","pathname":"/javascript/advanced/start-backbone.js-tutorial-videos","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1AVVpW-AwAFU4ICAD","title":"Backbone.js Tutorial - 1 - Installation.mp4 (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-1-installation.mp4-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1HWXboM6vt3zDXtbq","title":"Backbone.js Tutorial - 2 - Introduction to Models (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-2-introduction-to-models-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1Ijjh-_7mHDHHJG8A","title":"Backbone.js Tutorial - 3 - Model Attributes (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-3-model-attributes-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1KYXgHQhzzKMY0TI1","title":"Backbone.js Tutorial - 4 - Model Change Events ( ok)","pathname":"/javascript/advanced/backbone.js-tutorial-4-model-change-events-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1STeJp2xQUQxSsAoz","title":"Backbone.js Tutorial - 6 - Introduction to Views (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-6-introduction-to-views-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1V8Nbg1icSzvfjt4J","title":"Backbone.js Tutorial - 7 - (Views) Differerence between el and $el (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-7-views-differerence-between-el-and-usdel-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1WsYQd0bHSciKqk_d","title":"Backbone.js Tutorial - 8 - (Views) Creating New HTML Elements (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-8-views-creating-new-html-elements-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1ZNU66U8aWwQ9fKsj","title":"Backbone.js Tutorial - 9 - (Views) Using the Render Function (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-9-views-using-the-render-function-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1cj_haa8nliFy3PIB","title":"Backbone.js Tutorial - 10 - (Views) Events (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-10-views-events-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS2CmKhmpaPPjTOuu37","title":"Backbone.js Tutorial - 11 - Introduction to Collections (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-11-introduction-to-collections-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS2FS8lcwXmqJCwI4fw","title":"Backbone.js Tutorial - 12 - (Collections) Adding and Removing Elements (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-12-collections-adding-and-removing-elements-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS2HOXKgmpNmaauDEEy","title":"Backbone.js Tutorial - 13 - (Collections) Modifying Elements","pathname":"/javascript/advanced/backbone.js-tutorial-13-collections-modifying-elements","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS2KqxKnzJj74RK8UH2","title":"Backbone.js Tutorial - 14 - (Collections) Events (ok)","pathname":"/javascript/advanced/backbone.js-tutorial-14-collections-events-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS1ASaoJvE1UmyEyxrF","title":"======== End Backbone.js Tutorial Videos ======","pathname":"/javascript/advanced/end-backbone.js-tutorial-videos","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS2PpH6KIl8MqB14aRF","title":"====== Start Learn backbone.js tutorial from scratch for beginners =====","pathname":"/javascript/advanced/start-learn-backbone.js-tutorial-from-scratch-for-beginners","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS79F5n_WOK4D0VxdB2","title":"Backbone :)","pathname":"/javascript/advanced/backbone","siteSpaceId":"sitesp_xQRWC","description":"https://www.tutorialspoint.com/backbonejs/router_extend.htm"},{"id":"-MS2PxCCTTNcdxC7m8n-","title":"1. Learn backbone.js tutorial from scratch(Part 2) Features and Working Principle of backbone.js","pathname":"/javascript/advanced/2.-learn-backbone.js-tutorial-from-scratch-part-2-features-and-working-principle-of-backbone.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS32FdFVN7UDplSfInX","title":"2. Learn backbone.js tutorial from scratch for beginners(Part 4) About el and $el in Backbone.js","pathname":"/javascript/advanced/4.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-4-about-el-and-usdel-in-backbone.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS32yhpS-mK1LVaVQnH","title":"3. Learn backbone.js tutorial from scratch for beginners(Part 5) Underscore Templates in Backbone.js","pathname":"/javascript/advanced/5.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-5-underscore-templates-in-backbone.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3BkiijHb6OqG5jHOA","title":"4. Learn backbone.js tutorial from scratch for beginners (Part 7) Delegate Events in backbone.js","pathname":"/javascript/advanced/7.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-7-delegate-events-in-backbone.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3EW0rNOZj6u3cKWLJ","title":"5. Learn backbone.js tutorial from scratch for beginners(Part 8) Introduction of models in backbone.","pathname":"/javascript/advanced/8.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-8-introduction-of-models-in-backbone.","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3Ex6C1pS7M5qkdRtN","title":"6. Learn backbone.js tutorial from scratch for beginners(Part 9) Pass Model data to backbone.js View","pathname":"/javascript/advanced/9.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-9-pass-model-data-to-backbone.js-view","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3G7qCGzmWaFVnwVm5","title":"7. Learn backbone.js tutorial from scratch for beginners(Part 10) Model data to underscore.js templ","pathname":"/javascript/advanced/10.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-10-model-data-to-underscore.js-templ","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3b8abZHzKmLHL8SGq","title":"8. Learn backbone.js tutorial from scratch for beginners(Part 11) Head back to underscore.js symbol","pathname":"/javascript/advanced/11.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-11-head-back-to-underscore.js-symbol","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3dNP_lxzn634QP8fH","title":"9. Learn backbone.js tutorial from scratch for beginners(Part 12) Model Events in backbone.js","pathname":"/javascript/advanced/12.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-12-model-events-in-backbone.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3huGi808_sPq2jyqn","title":"10. Learn backbone.js tutorial from scratch for beginners(Part 13) Model Validation in backbone.js","pathname":"/javascript/advanced/10.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-13-model-validation-in-backbone.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS3kgmJ0roIjoDtgwlj","title":"11. Learn backbone.js tutorial from scratch for beginners(Part 14) Model Change Events in backbone.j","pathname":"/javascript/advanced/11.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-14-model-change-events-in-backbone.j","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS4CLUTRmWD3WAUxiuc","title":"12. Learn backbone.js tutorial from scratch for beginners(Part 15) More Model Events and listenTo ev","pathname":"/javascript/advanced/12.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-15-more-model-events-and-listento-ev","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS4HAng5MlOk0xayHl-","title":"13. Learn backbone.js tutorial from scratch for beginners(Part 16) Model Inheritance in backbone.js","pathname":"/javascript/advanced/13.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-16-model-inheritance-in-backbone.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS4Log4cLE2p0kHwYPM","title":"14. Learn backbone.js tutorial from scratch for beginners(Part 17) Collection in backbone js","pathname":"/javascript/advanced/14.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-17-collection-in-backbone-js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS6D0OiApA5wtK9W_LV","title":"15. Learn backbone.js tutorial from scratch for beginners(Part 18) Collection Events in backbone.js","pathname":"/javascript/advanced/15.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-18-collection-events-in-backbone.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS6LB1LreJwh4vKtJTy","title":"16. Learn backbone.js tutorial from scratch for beginners(Part 19) Collection to underscore.js templ","pathname":"/javascript/advanced/16.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-19-collection-to-underscore.js-templ","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS6TYicWcetiX1LmpGy","title":"17. Learn backbone.js tutorial from scratch for beginners(Part 20) Underscore js Methods in backbone","pathname":"/javascript/advanced/17.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-20-underscore-js-methods-in-backbone","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS72s6xek5ayGfeSJXr","title":"18. Learn backbone.js tutorial from scratch for beginners(Part 21) Routing in backbone.js","pathname":"/javascript/advanced/18.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-21-routing-in-backbone.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS7Fh_j8dWV19zioJ_8","title":"19. Learn backbone.js tutorial from scratch for beginners(Part 22) Parameterized Routing in backbone","pathname":"/javascript/advanced/19.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-22-parameterized-routing-in-backbone","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS7Hspkf4CYJ0Z7qpEQ","title":"20. Learn backbone.js tutorial from scratch for beginners(Part 23) Handlebars templates in backb","pathname":"/javascript/advanced/20.-learn-backbone.js-tutorial-from-scratch-for-beginners-part-23-handlebars-templates-in-backb","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS2Pthhu_1VKjr9sA_m","title":"====== End Learn backbone.js tutorial from scratch for beginners =====","pathname":"/javascript/advanced/end-learn-backbone.js-tutorial-from-scratch-for-beginners","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MS0m8yUmDmp7oJmJd-F","title":"Giới thiệu Backbone.js (ok)","pathname":"/javascript/advanced/gioi-thieu-backbone.js","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/gioi-thieu-backbonejs-yMnKMgArl7P"},{"id":"-MS0w_Tx403ekLKL028s","title":"Backbone.localStorage thay thế Backbone.sync lưu vào window.localStorage thay vì vào máy chủ (ok)","pathname":"/javascript/advanced/backbone.localstorage-thay-the-backbone.sync-luu-vao-window.localstorage-thay-vi-vao-may-chu-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/jeromegn/Backbone.localStorage"},{"id":"-MS0yHqg-B-jzV_Ain7L","title":"Một ví dụ full  LocalStorage với BackBoneJS  (ok)","pathname":"/javascript/advanced/localstorage-voi-backbonejs","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/localstorage-voi-backbonejs-Az45bnbz5xY"},{"id":"-MeTGmXli2LgmdlOEalg","title":"========== Start Backbonejs Php Mysql =============","pathname":"/javascript/advanced/start-backbonejs-php-mysql","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-Md1X-kyGpYW0wI6v0PA","title":"Full code backbonejs php mysql (ok)","pathname":"/javascript/advanced/backbonejs-php-mysql-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/NghiemNgo/backbonejs-php-mysql"},{"id":"-MfUC2tWLnuVfOPA4JBi","title":"Giao diện html để thực hành từ đầu (ok)","pathname":"/javascript/advanced/giao-dien-html-de-thuc-hanh-tu-dau-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MeXWSeKJFbj6YB6cKHG","title":"Xây dựng giao diện (ok)","pathname":"/javascript/advanced/xay-dung-giao-dien","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-Memf8bwz-kf441ch8BD","title":"Thực hiện chức năng crud add (ok)","pathname":"/javascript/advanced/thuc-hien-chuc-nang-crud-add-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-Memif2ZRXud1yFBC00a","title":"Phân tích để tạo giao diên http://localhost/gulp/#crud/new 1.0","pathname":"/javascript/advanced/phan-tich-de-tao-giao-dien-http-localhost-gulp-crud-new","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MfOUoL7RGARGUyHdFlX","title":"Phân tích để tạo giao diên http://localhost/gulp/#crud/new 1.1","pathname":"/javascript/advanced/phan-tich-de-tao-giao-dien-http-localhost-gulp-crud-new-1.1","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MfQnzhZ_PQMfZ8GkJ10","title":"Phân tích để tạo giao diên http://localhost/create/#crud/index 2.0","pathname":"/javascript/advanced/phan-tich-de-tao-giao-dien-http-localhost-create-crud-index-2.0","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MfTm0PvWveZ38t0YToo","title":"Chức năng thêm dữ liệu http://localhost/create/#crud/new (ok)","pathname":"/javascript/advanced/chuc-nang-them-du-lieu-http-localhost-create-crud-new-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MfTUuftRmXxsSpHLY1k","title":"Lấy dữ liệu ra trang http://localhost/create/#crud/index (ok)","pathname":"/javascript/advanced/lay-du-lieu-ra-trang-http-localhost-create-crud-index-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MfU8NWzlUgTDP_WbesK","title":"Chức năng cập nhật dữ liệu http://localhost/create/#crud/1/edit (ok)","pathname":"/javascript/advanced/chuc-nang-cap-nhat-du-lieu-http-localhost-create-crud-1-edit-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MeTGtY5Mm4GprCz1Sc3","title":"========== End Backbonejs Php Mysql =============","pathname":"/javascript/advanced/end-backbonejs-php-mysql","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MRyGlYYWo5IiHy3tWaJ","title":"JQuery-Template (ok)","pathname":"/javascript/advanced/jquery-template","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/jquery-template-XQZGxAAKewA"},{"id":"-MRwpz9uuWwPwGygDwVa","title":"Learning JavaScript Design Patterns P.1 (ok)","pathname":"/javascript/advanced/learning-javascript-design-patterns","siteSpaceId":"sitesp_xQRWC","description":"https://addyosmani.com/resources/essentialjsdesignpatterns/book/#introduction"},{"id":"-MRytVOAOwK8VH0mCIXn","title":"Learning JavaScript Design Patterns P.2 (ok)","pathname":"/javascript/advanced/learning-javascript-design-patterns-p.2-ok","siteSpaceId":"sitesp_xQRWC","description":"https://addyosmani.com/resources/essentialjsdesignpatterns/book/#introduction"},{"id":"-MRzZWwtWOL8uD-hIrur","title":"Learning JavaScript Design Patterns P.3 (ok)","pathname":"/javascript/advanced/learning-javascript-design-patterns-p.3-ok","siteSpaceId":"sitesp_xQRWC","description":"https://addyosmani.com/resources/essentialjsdesignpatterns/book/#introduction"},{"id":"-MRu8BVwfZBqqkL4CZuw","title":"Singleton design pattern PHP (ok)","pathname":"/javascript/advanced/singleton-design-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@lernphp/s/advanced/singleton-design-pattern-ok"},{"id":"-MRuJY6OBPOz0tdUQ-Wa","title":"Singleton Pattern javascript (ok)","pathname":"/javascript/advanced/singleton-pattern-javascript-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/design-pattern-trong-javascript"},{"id":"-MRuKqSibhy-0FFUcWCO","title":"Factory Pattern (ok)","pathname":"/javascript/advanced/factory-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/design-pattern-trong-javascript"},{"id":"-MRwHi_QQY4HQZFPjkJq","title":"Decorator Pattern (ok)","pathname":"/javascript/advanced/decorator-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/design-pattern-trong-javascript"},{"id":"-MRwLYisBroj4Tj2y__7","title":"Creational Pattern (ok)","pathname":"/javascript/advanced/creational-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":"http://www.giaosucan.com/2018/01/chem-gio-ve-javascript-design-pattern.html"},{"id":"-MRwM6VoKsv38Qve0lyp","title":"Constructor Pattern (ok)","pathname":"/javascript/advanced/constructor-pattern","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/creational-pattern-ok"},{"id":"-MRwNAjSYTeurL9abdcR","title":"Singleton Pattern (ok)","pathname":"/javascript/advanced/singleton-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/creational-pattern-ok"},{"id":"-MRwNt8Y9TXTw1Pq09ZH","title":"Module Pattern (ok)","pathname":"/javascript/advanced/module-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/creational-pattern-ok"},{"id":"-MRwPfy2QIUwhivHoYUf","title":"Factory pattern (ok)","pathname":"/javascript/advanced/factory-pattern","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/chem-gio-ve-javascript-design-pattern-phan-2"},{"id":"-MRwRyXgppdrxMN5r_W1","title":"Built-in Object Factory (ok)","pathname":"/javascript/advanced/built-in-object-factory-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/chem-gio-ve-javascript-design-pattern-phan-2"},{"id":"-MRwSU8fQLxiUlc9n30F","title":"Iterator (ok)","pathname":"/javascript/advanced/iterator-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/chem-gio-ve-javascript-design-pattern-phan-2"},{"id":"-MRwU2LYeNgpAd8HSW5U","title":"Bridge Pattern (ok)","pathname":"/javascript/advanced/bridge-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/chem-gio-ve-javascript-design-pattern-part-3"},{"id":"-MRwV8-SiLbj2ndbF_M9","title":"Composite Pattern (ok)","pathname":"/javascript/advanced/composite-pattern-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/chem-gio-ve-javascript-design-pattern-part-3"},{"id":"-MRu8NKAoDuMIzuz_hny","title":"Một số Design Patterns có thể sử dụng trong Javascript – Phần 1 (ok)","pathname":"/javascript/advanced/mot-so-design-patterns-co-the-su-dung-trong-javascript-phan-1-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@important-settings/s/project/mot-so-design-patterns-co-the-su-dung-trong-javascript-phan-1-ok"},{"id":"-MRwKclWzRaExI8McyC4","title":"Chém gió về JavaScript Design Pattern - Part 1(ok)","pathname":"/javascript/advanced/chem-gio-ve-javascript-design-pattern-part-1-ok","siteSpaceId":"sitesp_xQRWC","description":"http://www.giaosucan.com/2018/01/chem-gio-ve-javascript-design-pattern.html"},{"id":"-MRwPW9J9PPFW7_3oIPp","title":"Chém Gió Về JavaScript Design Pattern Phần 2","pathname":"/javascript/advanced/chem-gio-ve-javascript-design-pattern-phan-2","siteSpaceId":"sitesp_xQRWC","description":"https://codelearn.io/sharing/chem-gio-ve-javascript-design-pattern-phan-2"},{"id":"-MRwTi5IQiiwmtOjg-6p","title":"Chém gió về JavaScript Design Pattern - Part 3","pathname":"/javascript/advanced/chem-gio-ve-javascript-design-pattern-part-3","siteSpaceId":"sitesp_xQRWC","description":"http://www.giaosucan.com/2018/07/chem-gio-ve-javascript-design-pattern.html"},{"id":"-MRuAGQP0PQ5ofOM-ZUK","title":"4 Design Patterns trong Javascript mà bạn nên biết","pathname":"/javascript/advanced/4-design-patterns-trong-javascript-ma-ban-nen-biet","siteSpaceId":"sitesp_xQRWC","description":"https://hhmacademy.vn/tin-tuc/4-design-patterns-trong-javascript-ma-ban-nen-biet"},{"id":"-MRuAV8AO-a_3zimJqdJ","title":"Design Pattern trong JavaScript (ok)","pathname":"/javascript/advanced/design-pattern-trong-javascript","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/design-pattern-trong-javascript-Az45bYYolxY"},{"id":"-MRsCW-p9I56WWFIE6Uc","title":"Lebab chuyển mã ES5 của bạn thành ES6 / ES7. Nó hoàn toàn ngược lại với những gì Babel làm (ok)","pathname":"/javascript/advanced/lebab-chuyen-ma-es5-cua-ban-thanh-es6-es7.-no-hoan-toan-nguoc-lai-voi-nhung-gi-babel-lam-ok","siteSpaceId":"sitesp_xQRWC","description":"https://lebab.unibtc.me/editor/"},{"id":"-MRseBOS0mk6EtURe12T","title":"Turn your ES5 code into readable ES6 (ok)","pathname":"/javascript/advanced/turn-your-es5-code-into-readable-es6-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.npmjs.com/package/xto6"},{"id":"-MRRJLnaPIZbeAZgZ0fR","title":"Thuộc tính :selected quá tuyệt cho sự lựa chọn (ok)","pathname":"/javascript/advanced/thuoc-tinh-selected-qua-tuyet-cho-su-lua-chon-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MR3KXRAA1u_6unTTWvA","title":"jQuery I want to add an active class to the linked ID of an anchor tag style2.track360.xyz (ok)","pathname":"/javascript/advanced/jquery-i-want-to-add-an-active-class-to-the-linked-id-of-an-anchor-tag-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/45306883/jquery-i-want-to-add-an-active-class-to-the-linked-id-of-an-anchor-tag"},{"id":"-MR3h_ZbDSDACsZysGb8","title":"Keep URL unaffected when anchor link is clicked (ok)","pathname":"/javascript/advanced/keep-url-unaffected-when-anchor-link-is-clicked-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/17012592/keep-url-unaffected-when-anchor-link-is-clicked"},{"id":"-MR0qrtS_Wm1lT3PmrlT","title":"[UI SLIDER] Ui slider with text box input (ok)","pathname":"/javascript/advanced/ui-slider-ui-slider-with-text-box-input-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MQU_aNVDlPaIdJF4oL9","title":"[SELECT2] version Select2 3.5.3 nhìn trực quan hơn (ok)","pathname":"/javascript/advanced/select2-version-select2-3.5.3-nhin-truc-quan-hon-ok","siteSpaceId":"sitesp_xQRWC","description":"https://select2.github.io/select2/"},{"id":"-MQVhHYjq89u5Yzc9F0q","title":"[SELECT2] keypress select2, enter key press keycode yp.vn (ok)","pathname":"/javascript/advanced/select2-keypress-select2-enter-key-press-keycode-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/project/prevent-form-submission-on-enter-key-press-keycode-ok"},{"id":"-MQUy8w9cNTyz-ZbkDD9","title":"[SELECT2] Select2 Bootstrap Theme (ok)","pathname":"/javascript/advanced/select2-select2-bootstrap-theme-ok","siteSpaceId":"sitesp_xQRWC","description":"https://select2.github.io/select2-bootstrap-theme"},{"id":"-MQUahzcaQ-eNYrAm6QC","title":"[SELECT2] tags (ok)","pathname":"/javascript/advanced/select2-tags-ok","siteSpaceId":"sitesp_xQRWC","description":"C:\\xampp\\htdocs\\php\\lang.php"},{"id":"-MQUpDq9O_SF2hsLZXyn","title":"[SELECT2] tokenSeparators (ok)","pathname":"/javascript/advanced/select2-tokenseparators-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MQUq9KXHe1xPhOUR1jC","title":"[SELECT2] click change value (ok)","pathname":"/javascript/advanced/select2-click-change-value-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MQUuvzWo1TVKDgjN_bD","title":"[SELECT2] jQuery $.ajax options (ok)","pathname":"/javascript/advanced/select2-jquery-usd.ajax-options-ok","siteSpaceId":"sitesp_xQRWC","description":"https://select2.org/data-sources/ajax"},{"id":"-MQQm47hjKjQqGsJvVTo","title":"[SELECT2] Full Options (ok)","pathname":"/javascript/advanced/select2-full-options-ok","siteSpaceId":"sitesp_xQRWC","description":"https://jeesite.gitee.io/front/jquery-select2/4.0/options.htm"},{"id":"-MQQme8E1oojpd3BXvxu","title":"[SELECT2] value placeholder (ok)","pathname":"/javascript/advanced/select2-value-placeholder-ok","siteSpaceId":"sitesp_xQRWC","description":"https://jeesite.gitee.io/front/jquery-select2/4.0/options.htm"},{"id":"-MQQplFIYYRpB9MGIxkJ","title":"[SELECT2] Can thiệp vào templateResult (ok)","pathname":"/javascript/advanced/select2-co-the-lay-tat-ca-gia-tri-de-dang-bang-templateresult-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MQR8skU8CxighoLAzRb","title":"[SELECT2] làm lá cờ gắn trước text kiểu kool ngầu (ok)","pathname":"/javascript/advanced/select2-lam-la-co-gan-truoc-text-kieu-kool-ngau-ok","siteSpaceId":"sitesp_xQRWC","description":"https://select2.github.io/select2/"},{"id":"-MQQql163e0NWruthyg9","title":"[SELECT2] cam thiệp vào templateSelection (ok)","pathname":"/javascript/advanced/select2-cam-thiep-vao-templateselection-ok","siteSpaceId":"sitesp_xQRWC","description":"https://jeesite.gitee.io/front/jquery-select2/4.0/options.htm"},{"id":"-MQQrs7GcxOnfk9Ws-Vr","title":"[SELECT2] thêm thẻ bọc vào lựa chọn ví dụ thẻ <strong/> (ok)","pathname":"/javascript/advanced/select2-them-the-boc-vao-lua-chon-vi-du-the-less-than-strong-greater-than-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MQQt0slw-z_KdhTFpJ4","title":"[SELECT2] opening when a result is selected (ok)","pathname":"/javascript/advanced/select2-opening-when-a-result-is-selected-ok","siteSpaceId":"sitesp_xQRWC","description":"https://jeesite.gitee.io/front/jquery-select2/4.0/options.htm"},{"id":"-MQR1A8P65Nsh_HlD2hC","title":"[SELECT2] Full Adapters hay (ok)","pathname":"/javascript/advanced/select2-full-adapters-hay-ok","siteSpaceId":"sitesp_xQRWC","description":"https://bojanv91.github.io/posts/2017/10/extending-select2-with-adapters-and-decorators"},{"id":"-MQQZSXhDLCHUjLmVlAe","title":"[SELECT2] Kiểu dữ liệu trả về cho giao diện dùng html & json (ok)","pathname":"/javascript/advanced/select2-kieu-du-lieu-tra-ve-cho-giao-dien-ok","siteSpaceId":"sitesp_xQRWC","description":"https://select2.org/data-sources/formats"},{"id":"-MQQgh85mpN1-u1B_GF0","title":"[SELECT2] sử dụng ngôn ngữ, i18n, language (ok)","pathname":"/javascript/advanced/select2-su-dung-ngon-ngu-ok","siteSpaceId":"sitesp_xQRWC","description":"https://jsbin.com/xaqibalabi/edit?html,js,output"},{"id":"-MQQiGImSyLgiwFNmYrg","title":"[SELECT2] dropdownParent (ok)","pathname":"/javascript/advanced/select2-dropdownparent-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MQCu7U5KT5940urz0LB","title":"[SELECT2] Hiểu submit trong javascript và nâng cấp sử dụng select 2, autocomplate (ok)","pathname":"/javascript/advanced/bay-gio-thi-toi-moi-hieu-submit-trong-javascript-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MQFvhSzmTfHrmjx66dM","title":"[SELECT2] Common problems Select2 does not function properly when I use it inside a Bootstrap modal","pathname":"/javascript/advanced/select2-common-problems-select2-does-not-function-properly-when-i-use-it-inside-a-bootstrap-modal","siteSpaceId":"sitesp_xQRWC","description":"https://select2.org/troubleshooting/common-problems"},{"id":"-MQKS8Hm1gWzunZYnK_d","title":"[SELECT2] Full Events (ok)","pathname":"/javascript/advanced/select2-full-events-ok","siteSpaceId":"sitesp_xQRWC","description":"https://select2.org/programmatic-control/events#limiting-the-scope-of-the-change-event"},{"id":"-MQKjl94b2vsa61q9Ljq","title":"[SELECT2] lấy dữ liệu của wp, wordpress để thực hành (ok)","pathname":"/javascript/advanced/select2-lay-du-lieu-cua-wp-wordpress-de-thuc-hanh-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.nicesnippets.com/blog/jquery-select2-ajax-php-example"},{"id":"-MQKsfQ9ZEbuWWk9FGed","title":"[JSONPLACEHOLDER SELECT2] Full Sử dụng website jsonplaceholder.typicode.com để thực hành (ok)","pathname":"/javascript/advanced/su-dung-website-jsonplaceholder.typicode.com-de-thuc-hanh-ok","siteSpaceId":"sitesp_xQRWC","description":"http://jsonplaceholder.typicode.com"},{"id":"-MNRyHgGncHohuVpumyM","title":"Sử dụng fetch trên console.log để get api test (ok)","pathname":"/javascript/advanced/su-dung-fetch-tren-console.log-de-get-api-test-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MN6qc3vgmlskZhCL3oG","title":"jQuery.naturalWidth / jQuery.naturalHeight images natural Width Height Native Width (ok)","pathname":"/javascript/advanced/jquery.naturalwidth-jquery.naturalheight-images-natural-width-height-native-width-ok","siteSpaceId":"sitesp_xQRWC","description":"Lấy kích thước ảnh gốc"},{"id":"-MMUGjuyaCclgazjuJo7","title":"[SUBMIT ] form submit jquery (ok)","pathname":"/javascript/advanced/submit-form-submit-jquery-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MRrlPs4vrI5o3egsZ82","title":"Tạo file package.json bằng lệnh (ok)","pathname":"/javascript/advanced/tao-file-package.json-bang-lenh-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MRrl3YylPqJmWfWjS2X","title":"[TYPESCRIPT] tạo file tsconfig.json bằng lệnh (ok)","pathname":"/javascript/advanced/typescript-tao-file-tsconfig.json-bang-lenh-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MM5bZv7WF46M0y0v0HN","title":"[TYPESCRIPT] cài đặt package chạy trực tiếp ts, tsx, ts-node (ok)","pathname":"/javascript/advanced/typescript-cai-dat-package-chay-truc-tiep-ts-tsx-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MHZ3ItD3Q3u1nLceq_E","title":"Object  for Three Dots, Array for Three Dots (ok)","pathname":"/javascript/advanced/object-for-three-dots-array-for-three-dots-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@learnreac/s/project/object-for-three-dots-array-for-three-dots-ok"},{"id":"-MM-oEKSaGn2xHLxHzhv","title":"Cách giải thích Private Constructors & Singletons quá tuyệt (ok)","pathname":"/javascript/advanced/cach-giai-thich-private-constructors-and-singletons-qua-tuyet-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/phamngoctuong/typescript-cheatsheet"},{"id":"-MM3wtrFAhwsppeEUkSv","title":"[TYPESCRIPT] Một số scripts hay được sử dụng trong typescripts (ok)","pathname":"/javascript/advanced/typescript-mot-so-scripts-hay-duoc-su-dung-trong-typescripts-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MM3y-tLFPxD1HtZBQtL","title":"[TYPESCRIPT]  A practical guide to TypeScript decorators  exmaple (ok)","pathname":"/javascript/advanced/a-practical-guide-to-typescript-decorators-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@javascriptuse/s/advanced/typescript-mot-so-scripts-hay-duoc-su-dung-trong-typescripts-ok"},{"id":"-MM5NwhPcnBG_tvajsDC","title":"Object.getOwnPropertyDescriptor() (ok)","pathname":"/javascript/advanced/object.getownpropertydescriptor-ok","siteSpaceId":"sitesp_xQRWC","description":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor"},{"id":"-MM5G9AsJqJDdHLsflcz","title":"JavaScript — Property Descriptor && PropertyDescriptor (ok)","pathname":"/javascript/advanced/javascript-property-descriptor-and-and-propertydescriptor-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codeburst.io/javascript-object-property-attributes-ac012be317e2"},{"id":"-MM-zpGPx-HK6pGBmZTH","title":"[TYPESCRIPT] Employing “Namespaces” in TypeScript to encapsulate your data","pathname":"/javascript/advanced/typescript-employing-namespaces-in-typescript-to-encapsulate-your-data","siteSpaceId":"sitesp_xQRWC","description":"https://medium.com/jspoint/typescript-namespaces-f43cd002c08c"},{"id":"-MM16W0BMUddJNs5jw5A","title":"[TYPESCRIPT] Một ví dụ sử dụng TypeScript Namespaces, xuất file use on browser (ok)","pathname":"/javascript/advanced/typescript-mot-vi-du-su-dung-typescript-namespaces-ok","siteSpaceId":"sitesp_xQRWC","emoji":"1f605","description":"https://www.javatpoint.com/typescript-namespaces"},{"id":"-MM1RKjPhes-F1u0eN5G","title":"[NODEJS] object hóa một file trong javascript Nodejs - require, exports and module.exports","pathname":"/javascript/advanced/nodejs-object-hoa-mot-file-trong-javascript-nodejs-require-exports-and-module.exports","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/nodejs-require-exports-and-moduleexports-djeZ18PQKWz"},{"id":"-MM2DsY1t2gjrz3L1REQ","title":"[TYPECRIPT] Omit type when extending an interface Cách loại trừ các thuộc tính khỏi giao diện (ok)","pathname":"/javascript/advanced/typecript-omit-type-when-extending-an-interface-cach-loai-tru-cac-thuoc-tinh-khoi-giao-dien-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/51063976/how-to-exclude-properties-from-interface-while-inheriting"},{"id":"-MIqJJlQj4q8LxJUFnM6","title":"How TO - List Grid View (ok)","pathname":"/javascript/advanced/how-to-list-grid-view","siteSpaceId":"sitesp_xQRWC","description":"https://www.w3schools.com/howto/howto_js_list_grid_view.asp"},{"id":"-MI71hvWXoyrCgxYCAgV","title":"Javascript module, import, export, dễ ẹc, nhưng có thể bạn vẫn chưa biết","pathname":"/javascript/advanced/javascript-module-import-export-de-ec-nhung-co-the-ban-van-chua-biet","siteSpaceId":"sitesp_xQRWC","description":"https://kysumattien.com/javascript-module-history/?fbclid=IwAR1eBQCcRLZxITwJZUcotImIhWTHnBlp9ptjpGwB2oD8egOGf9C40jJkWAE"},{"id":"-MIYFjvp_AcCtxnrxQZL","title":"[BABEL] Giải thích gói babel (ok)","pathname":"/javascript/advanced/babel-giai-thich-goi-babel-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MIYQDD6Rh_WWic5gAtc","title":"Cấu hình Webpack và Babel 7 cho React (ok)","pathname":"/javascript/advanced/cau-hinh-webpack-va-babel-7-cho-react-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/cau-hinh-webpack-va-babel-7-cho-react-63vKjb3xK2R"},{"id":"-MGm2dRwQ3vTJHP8GXgh","title":"----------------- Start Kế thừa Prototype ngang và dọc -------------------","pathname":"/javascript/advanced/start-ke-thua-prototype-ngang-va-doc","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MGlYLzt14fIK7OvuSjX","title":"Kế thừa Prototype ngang và dọc","pathname":"/javascript/advanced/ke-thua-prototype-ngang-va-doc","siteSpaceId":"sitesp_xQRWC","description":"https://js.edu.vn/7-ke-thua-prototype-ngang-va-doc.html"},{"id":"-MGlxDPfgGK0XpeReg1X","title":"class, super, constructor  (ok)","pathname":"/javascript/advanced/class-super-constructor-ok","siteSpaceId":"sitesp_xQRWC","description":"https://js.edu.vn/7-ke-thua-prototype-ngang-va-doc.html"},{"id":"-MGm2PtYT8pC9hAo-4E1","title":"Kế thừa ngang giữa function (ok)","pathname":"/javascript/advanced/ke-thua-ngang-giua-function-ok","siteSpaceId":"sitesp_xQRWC","description":"https://js.edu.vn/7-ke-thua-prototype-ngang-va-doc.html"},{"id":"-MGm2vQRj_Dnph3JybCq","title":"Ví dụ về kế thừa prototype ngang theo function constructor. Liên quan đến hàm call(), sẽ có bài chi","pathname":"/javascript/advanced/untitled-1","siteSpaceId":"sitesp_xQRWC","description":"https://js.edu.vn/7-ke-thua-prototype-ngang-va-doc.html"},{"id":"-MGm9p_mVEelDC3vKdA2","title":"Kế thừa ngang giữa 2 object","pathname":"/javascript/advanced/ke-thua-ngang-giua-2-object","siteSpaceId":"sitesp_xQRWC","description":"https://js.edu.vn/7-ke-thua-prototype-ngang-va-doc.html"},{"id":"-MGmFyaKzt7r2BDvm_Ag","title":"Muốn tạo một class, object có tên k hác khi console.log?? (ok)","pathname":"/javascript/advanced/muon-tao-mot-class-object-co-ten-k-hac-khi-console.log-ok","siteSpaceId":"sitesp_xQRWC","description":"https://js.edu.vn/7-ke-thua-prototype-ngang-va-doc.html"},{"id":"-MGnDJ41dsTYloPuRpzP","title":"Ví dụ về Function constructor và object instance (ok)","pathname":"/javascript/advanced/vi-du-ve-function-constructor-va-object-instance","siteSpaceId":"sitesp_xQRWC","description":"https://js.edu.vn/7-ke-thua-prototype-ngang-va-doc.html"},{"id":"-MGnHNf05AFh0CgnHJR_","title":"Tất cả đều từ Function","pathname":"/javascript/advanced/tat-ca-deu-tu-function","siteSpaceId":"sitesp_xQRWC","description":"https://js.edu.vn/7-ke-thua-prototype-ngang-va-doc.html"},{"id":"-MGm2jNw2dCG9hvvvWN7","title":"----------------- End Kế thừa Prototype ngang và dọc -----------","pathname":"/javascript/advanced/end-ke-thua-prototype-ngang-va-doc","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MDXX7-RL0PQgVvBEyp6","title":"Easy Responsive Tabs to Accordion (ok)Demos","pathname":"/javascript/advanced/easy-responsive-tabs-to-accordion-demos","siteSpaceId":"sitesp_xQRWC","description":"https://www.jqueryscript.net/accordion/Easy-Responsive-Tab-Accordion-Control-Plugin-For-jQuery.html"},{"id":"-MFEF48y9xF-dxpAZ54W","title":"[ERROR] unable to read package/javascript (ok)","pathname":"/javascript/advanced/error-unable-to-read-package-javascript-ok","siteSpaceId":"sitesp_xQRWC","description":"https://superuser.com/questions/1089786/sublime-text-3-automatically-adds-javascript-to-ignored-packages"},{"id":"-MDDHTDCn2M8PCUFVZNG","title":"------------Start Json-----------------","pathname":"/javascript/advanced/start-json","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MDDGzgi73UKYRye1sl8","title":"Cách để truyền dữ liệu dạng boolean trong Postman (ok)","pathname":"/javascript/advanced/cach-de-truyen-du-lieu-dang-boolean-trong-postman-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MDDHYjR772i35fy7Acu","title":"------------ End Json-----------------","pathname":"/javascript/advanced/end-json","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MD3KCLQ1WeHACOTH5yE","title":"---------- start JSONP ---------------------","pathname":"/javascript/advanced/start-jsonp","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MD3KNB06obwnt5NGVN9","title":"Cross-Domain Ajax Requests","pathname":"/javascript/advanced/cross-domain-ajax-requests","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/cross-domain-ajax-requests-l5y8Rr52vob3"},{"id":"-MD3Kb5zY2ElQKv9rmRw","title":"1. JSONP (JSON with padding)","pathname":"/javascript/advanced/1.-jsonp-json-with-padding","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MD3NZfvKLymKAtHXfxc","title":"2. CORSCross-origin resource sharing (CORS) là một cơ chế đặc biệt cho phép resource đặt tại một do","pathname":"/javascript/advanced/2.-corscross-origin-resource-sharing-cors-la-mot-co-che-dac-biet-cho-phep-resource-dat-tai-mot-do","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/cross-domain-ajax-requests-l5y8Rr52vob3"},{"id":"-MD3OyGETzMaU4RsgOBJ","title":"3. Proxy","pathname":"/javascript/advanced/3.-proxy","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MD3890sZN92WBuMDFtX","title":"JSONP là gì và tại sao nó được tạo ra? (ok)","pathname":"/javascript/advanced/jsonp-la-gi-va-tai-sao-no-duoc-tao-ra-ok","siteSpaceId":"sitesp_xQRWC","description":"https://helpex.vn/question/jsonp-la-gi-va-tai-sao-no-duoc-tao-ra--5cb02221ae03f645f4201505"},{"id":"-MD3X9A9ZxDCUOE9I-to","title":"4. Javascript – Tạo script động và kĩ thuật JSONP (ok)","pathname":"/javascript/advanced/4.-javascript-tao-script-dong-va-ki-thuat-jsonp-ok","siteSpaceId":"sitesp_xQRWC","description":"https://yinyangit.wordpress.com/2011/12/28/javascript-tao-script-dong-va-ki-thuat-jsonp/"},{"id":"-MD3KIkN7KE88ErCFI2u","title":"----------- End JSONP --------------","pathname":"/javascript/advanced/end-jsonp","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M1El3uu01Cb0DLcDi5F","title":"Destructuring Assignment in ES6","pathname":"/javascript/advanced/destructuring-assignment-in-es6","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/destructuring-assignment-in-es6-xlbRBNQgRDM"},{"id":"-M2nwhpqsheyjnqc7nYh","title":"Cơ chế bất đồng bộ trong javascript (ok)","pathname":"/javascript/advanced/co-che-bat-dong-bo-trong-javascript-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/co-che-bat-dong-bo-trong-javascript-jvElaO1zKkw"},{"id":"-MAVM4NmhqtwhrWFD2pD","title":"jQuery.inArray()","pathname":"/javascript/advanced/jquery.inarray","siteSpaceId":"sitesp_xQRWC","description":"https://docs.w3cub.com/jquery/jquery.inarray/"},{"id":"-M2oAmGmib-kp68Bm3XT","title":"website check call stack (ok)","pathname":"/javascript/advanced/website-check-call-stack-ok","siteSpaceId":"sitesp_xQRWC","description":"http://latentflip.com/loupe"},{"id":"-M2oKvVM8UIb44itPvoX","title":"Bài 6: Template Literals trong ES6 (ok)","pathname":"/javascript/advanced/bai-6-template-literals-trong-es6-ok","siteSpaceId":"sitesp_xQRWC","description":"https://toidicode.com/template-literals-trong-es6-335.html"},{"id":"-M2oOw7LsZeA-in-5Xg9","title":"ES6 Arrow Functions (ok)","pathname":"/javascript/advanced/es6-arrow-functions-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/es6-arrow-functions-QpmleLr9Zrd"},{"id":"-M2oda7Zyy4se8rUpymS","title":"Lập trình TypeScript   (ok)","pathname":"/javascript/advanced/lap-trinh-typescript-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.typescriptlang.org/docs/handbook/compiler-options.html"},{"id":"-M2y89LmKp0rWfL4R8Xj","title":"Uncaught ReferenceError: exports is not defined in filed generated by Typescript (ok)","pathname":"/javascript/advanced/uncaught-referenceerror-exports-is-not-defined-in-filed-generated-by-typescript-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/42497479/uncaught-referenceerror-exports-is-not-defined-in-filed-generated-by-typescript/42510255"},{"id":"-M2zqdtf0cggVfVYj9hC","title":"Cách hoạt động của các module loader? (ok) một ví dụ kinh điển :)","pathname":"/javascript/advanced/cach-hoat-dong-cua-cac-module-loader-ok-mot-vi-du-kinh-dien","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M2zRRhO7sFa8oVw_Agc","title":"RequireJS Cho Người Mới Bắt Đầu  (ok) quá tuyệt","pathname":"/javascript/advanced/requirejs-cho-nguoi-moi-bat-dau-ok-qua-tuyet","siteSpaceId":"sitesp_xQRWC","description":"https://www.stdio.vn/articles/requirejs-cho-nguoi-moi-bat-dau-619"},{"id":"-M2zs9pO1Elsj2AhigSS","title":"Tiny loaders tương tự REQUIREJS (Ok)","pathname":"/javascript/advanced/tiny-loaders-tuong-tu-requirejs-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M2zgg2tvTcMhP9JRV9a","title":"Javascript Module Loader – From the basic (ok)","pathname":"/javascript/advanced/javascript-module-loader-from-the-basic","siteSpaceId":"sitesp_xQRWC","description":"https://techtalk.vn/javascript-module-loader-from-the-basic.html"},{"id":"-M30P-DyG7syzDFXegRX","title":"ES6 Modules and CommonJS (Oke) Một ví dụ quý hơn vàng :(((","pathname":"/javascript/advanced/es6-modules-and-commonjs-oke-mot-vi-du-quy-hon-vang","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/javascript-promises-classes-es6-modules-and-commonjs-07LKX48DKV4"},{"id":"-M30Vpaq1SRfA2j71TAJ","title":"CommonJS là một module pattern hỗ trợ cho tất cả các phiên bản Node.js. Với CommonJS, JavaScript obj","pathname":"/javascript/advanced/commonjs-la-mot-module-pattern-ho-tro-cho-tat-ca-cac-phien-ban-node.js.-voi-commonjs-javascript-obj","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/javascript-promises-classes-es6-modules-and-commonjs-07LKX48DKV4"},{"id":"-MIMRa_S8DK1g3eBw7h1","title":"------------------------Start webpack ----------------------","pathname":"/javascript/advanced/start-webpack","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MhDG7SjjvNBqfoUreoa","title":"[WEBPACK] Làm một ví dụ compile scss, sass bằng WEBPACK full (ok)","pathname":"/javascript/advanced/lam-mot-vi-du-compile-scss-sass-bang-webpack-full-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MhHypAOqzyN3awMWniZ","title":"Webpack từ A đến Á: Webpack watch mode (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-watch-mode-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/06/webpack-watch-mode.html"},{"id":"-MhHzHyu19otULXgMLFB","title":"Webpack từ A đến Á: Webpack dev server (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-dev-server-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/07/webpack-dev-server.html"},{"id":"-MhJxtkIdCDv__lRGQN3","title":"Webpack từ A đến Á: Webpack output hash digest (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-output-hash-digest-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/06/webpack-output-hash-digest.html"},{"id":"-MhJyAQEP2uTy3yHMmyt","title":"Webpack từ A đến Á: Webpack multiple entry points (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-multiple-entry-points-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/07/webpack-multiple-entry-points.html"},{"id":"-MhJzUqLG11IKds8jHqK","title":"Webpack từ A đến Á: Webpack multiple file types per entry (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-multiple-file-types-per-entry-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/06/webpack-multiple-file-types-per-entry.html"},{"id":"-MhK2kJkki_FmdWFYKjF","title":"Webpack từ A đến Á: Webpack import export module (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-import-export-module-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/08/webpack-import-export-module.html"},{"id":"-MhK2zT-7-RJRdATpBLQ","title":"Webpack từ A đến Á: Webpack source map (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-source-map-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/07/webpack-source-map.html"},{"id":"-MhK5RxyPtaE-IkHH7lN","title":"Webpack từ A đến Á: Webpack import jQuery (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-import-jquery-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/08/webpack-import-jquery.html"},{"id":"-MhK8P2L8VZUvwRofvgG","title":"Webpack từ A đến Á: Webpack import jQuery - Bootstrap (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-import-jquery-bootstrap-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/08/webpack-import-jquery-bootstrap.html"},{"id":"-MhKHUciy2JVDOZW14lf","title":"Webpack từ A đến Á: Webpack import jQuery - Materialize","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-import-jquery-materialize","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/08/webpack-import-jquery-materialize.html"},{"id":"-MhKHp1334-gfy88B4tj","title":"Webpack từ A đến Á: Code Splitting  (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-code-splitting-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/06/webpack-code-splitting.html"},{"id":"-MhOifHQX-GbgdZ5szdO","title":"Webpack từ A đến Á: Code Splitting (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-code-splitting-ok-1","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/06/webpack-code-splitting.html"},{"id":"-MhOj3mYlCTGiTvph8Ej","title":"Webpack từ A đến Á: Webpack resolve alias - extensions","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-resolve-alias-extensions-1","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/08/webpack-resolve-alias-extensions.html"},{"id":"-MhOjunHutHM1GOYdKMQ","title":"Config alias chuẩn trong webpack (ok)","pathname":"/javascript/advanced/config-alias-chuan-trong-webpack-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kipalog.com/posts/Config-alias-chuan-trong-webpack"},{"id":"-MhOm8wALkPMt46mBby6","title":"Webpack từ A đến Á: Webpack Babel Loader (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-babel-loader-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/07/webpack-babel-loader.html"},{"id":"-MhOo-i34wxp81H-502j","title":"Webpack từ A đến Á: Webpack Eslint Loader (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-eslint-loader-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/07/webpack-eslint-loader.html"},{"id":"-MhOqH2obZMfPDVb6O5c","title":"Webpack từ A đến Á: Webpack Url Loader (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-url-loader-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/08/webpack-url-loader.html"},{"id":"-MhOvk0AHch_BBVDrfVd","title":"Webpack từ A đến Á: Webpack File Loader (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-file-loader-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/08/webpack-file-loader.html"},{"id":"-MhOwj0Zrvhb-jGK-PDb","title":"Webpack từ A đến Á: Webpack Style Loader (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-style-loader","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/08/webpack-style-loader.html"},{"id":"-MhP2YKdaemjNeFG4yWz","title":"Webpack từ A đến Á: Webpack Sass Loader (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-sass-loader-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/10/webpack-sass-loader.html"},{"id":"-MhP9HgNfIzcmjShz-Ix","title":"Webpack từ A đến Á: Html Webpack Plugin (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-html-webpack-plugin-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2021/06/html-webpack-plugin.html"},{"id":"-MhPDHJUdQye_yJK5P2g","title":"Option chunks Html Webpack Plugin (ok)","pathname":"/javascript/advanced/option-chunks-html-webpack-plugin-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2021/06/html-webpack-plugin.html"},{"id":"-MhPDdlUvX_0aHyP4YG2","title":"Webpack từ A đến Á: Clean Webpack Plugin (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-clean-webpack-plugin-ok","siteSpaceId":"sitesp_xQRWC","description":"https://kentrung256.blogspot.com/2020/07/clean-webpack-plugin.html"},{"id":"-MIe5q1yE2yI1kYIUG5o","title":"What is the difference between @babel/core and babel-core? (ok)","pathname":"/javascript/advanced/what-is-the-difference-between-babel-core-and-babel-core-ok","siteSpaceId":"sitesp_xQRWC","description":"https://ddcode.net/2019/04/20/what-is-the-difference-between-babel-core-and-babel-core-2/"},{"id":"-MISmy-2JSAMUGE8czkS","title":"[WEBPACK] 2. Webpack : Khởi Tạo Project (nghiepuit)","pathname":"/javascript/advanced/webpack-2.-webpack-khoi-tao-project","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=-yPEoARR9nM&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=2"},{"id":"-MISsHAV94IeUytrJGaS","title":"[WEBPACK] 3. Webpack : Apply Babel Cho Project  (nghiepuit)","pathname":"/javascript/advanced/webpack-3.-webpack-apply-babel-cho-project-nghiepuit","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=_BZDmxVC2fo&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=3"},{"id":"-MIT6CNNMHiCrUbgiecG","title":"[WEBPACK] 4. Webpack : CSS Loader (nghiepuit)","pathname":"/javascript/advanced/4.-webpack-css-loader","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=yTc4Mk5cZF8&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=4"},{"id":"-MIe8e-mHkPza4t97bOt","title":"plugin @babel/plugin-proposal-class-properties","pathname":"/javascript/advanced/plugin-babel-plugin-proposal-class-properties","siteSpaceId":"sitesp_xQRWC","description":"https://www.npmjs.com/package/@babel/plugin-proposal-class-properties"},{"id":"-MITKBEkwkb4TtRSkTnX","title":"[WEBPACK] 5. Webpack : Tạo Project ReactJS (","pathname":"/javascript/advanced/5.-webpack-tao-project-reactjs","siteSpaceId":"sitesp_xQRWC","description":"https://www.valentinog.com/blog/babel/"},{"id":"-MIZE1uY1iWKml1lyyqw","title":"[WEBPACK] 7. Webpack : File Loader - Tích Hợp Bootstrap","pathname":"/javascript/advanced/webpack-7.-webpack-file-loader-tich-hop-bootstrap","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=Eh9spDC0WoI&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=7"},{"id":"-MIZdBeNHY8lit2iv3rh","title":"[WEBPACK] 8. Webpack : Tích Hợp Jquery, React, Redux Devtools (nghiepuit)","pathname":"/javascript/advanced/webpack-8.-webpack-tich-hop-jquery-react-redux-devtools","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=_oL3PErft_s&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=8"},{"id":"-MIZrETrsGrJmZxR-Fv5","title":"[WEBPACK] 9. Webpack : Vendor Caching","pathname":"/javascript/advanced/webpack-9.-webpack-vendor-caching","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=vdmHdR-uqsE&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=9"},{"id":"-MIZvvJkd2m0vA1zwkbJ","title":"[WEBPACK] 10. Webpack : CommonsChunkPlugin","pathname":"/javascript/advanced/webpack-10.-webpack-commonschunkplugin","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=qhRmfqDieb4&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=10"},{"id":"-MIbG0a1ClT_amMIIIm0","title":"[WEBPACK] 10. Webpack : CommonsChunkPlugin (ok)","pathname":"/javascript/advanced/webpack-10.-webpack-commonschunkplugin-1","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=qhRmfqDieb4&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=10"},{"id":"-MIbQtbIBtm19pkZ0BhR","title":"[WEBPACK] Webpack series (ep3) - code splitting - chia code trong webpack (ok)","pathname":"/javascript/advanced/webpack-series-ep3-code-splitting-chia-code-trong-webpack","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-series-ep3-code-splitting-chia-code-trong-webpack-yMnKMyRzK7P"},{"id":"-MIgZ5Twdn1jYrLi5pT5","title":"Compile SASS with Webpack into a CSS file (ok)","pathname":"/javascript/advanced/compile-sass-with-webpack-into-a-css-file-ok","siteSpaceId":"sitesp_xQRWC","description":"https://florianbrinkmann.com/en/sass-webpack-4240/"},{"id":"-MIcE6CtuSTexw1iFweO","title":"[WEBPACK] 11. Webpack : Optimize Khi Bundle  template (ok)","pathname":"/javascript/advanced/11.-webpack-optimize-khi-bundle","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=nGc3fTGRG5k&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=11"},{"id":"-MIcNsHldp3kD9tR25R2","title":"[WEBPACK] 12. Webpack : Clean Project (ok)","pathname":"/javascript/advanced/12.-webpack-clean-project","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=OL1NDW3z1tY&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=12"},{"id":"-MIcQDDt2LKlo3lJd46y","title":"[WEBPACK] 12+. Webpack : webpack-dev-server","pathname":"/javascript/advanced/webpack-12+.-webpack-webpack-dev-server","siteSpaceId":"sitesp_xQRWC","description":"https://www.youtube.com/watch?v=zK9ek82u_Lg&list=PLJ5qtRQovuEOqsMokakP9ue-y_jXhmCwJ&index=13"},{"id":"-MIc-O49Tr6jM_sdqo9F","title":"[WEBPACK] Plugin HtmlWebpackPlugin (ok)","pathname":"/javascript/advanced/plugin-htmlwebpackplugin-ok","siteSpaceId":"sitesp_xQRWC","description":"https://hocwebchuan.com/tutorial/webpack/html_webpack_plugin.php"},{"id":"-MIZdZsm03XyvENqDye0","title":"HashRouter vs BrowserRouter","pathname":"/javascript/advanced/hashrouter-vs-browserrouter","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/51974369/hashrouter-vs-browserrouter"},{"id":"-MIXHN1LahHflmpKt9_L","title":"[WEBPACK] Webpack giúp kết nối các module lại với nhau ( (ok)","pathname":"/javascript/advanced/webpack-giup-ket-noi-cac-module-lai-voi-nhau-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MISxdmWi27He1_z06F7","title":"[WEBPACK] Chú ý: @babel/preset-env dùng cho những gói cũ thay vì khai báo mới babel-preset-env (ok)","pathname":"/javascript/advanced/chu-y-babel-preset-env-dung-cho-nhung-goi-cu-thay-vi-khai-bao-moi-babel-preset-env-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MISskIYYp_mK2hvREH5","title":"[WEBPACK]","pathname":"/javascript/advanced/webpack","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MIKJgx7zHRL19Nv7Cfj","title":"[WEBPACK]  webpack-dev-server (ok)","pathname":"/javascript/advanced/webpack-webpack-dev-server-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MIRlNGFYsDQU34orct_","title":"[WEBPACK] liên kết với trang Webpack (ok)","pathname":"/javascript/advanced/webpack-lien-ket-voi-trang-webpack-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@gitwebpack/s/project/"},{"id":"-MIKKJjZs5822_Yc0ayk","title":"[WEBPACK] Webpack output hash digest (ok)","pathname":"/javascript/advanced/webpack-output-hash-digest-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-output-hash-digest-924lJ3xm5PM"},{"id":"-MIKQgM4KoDN1OQRfIQC","title":"[WEBPACK] Webpack multiple file types per entry","pathname":"/javascript/advanced/webpack-multiple-file-types-per-entry","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-multiple-file-types-per-entry-4dbZNJpvZYM"},{"id":"-MIKQxvsCa5qbVor7AI4","title":"[WEBPACK] Webpack import export module (ok)","pathname":"/javascript/advanced/webpack-import-export-module-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-import-export-module-924lJ3Ja5PM"},{"id":"-MIKRcCs-uHhAt3sQbiv","title":"[WEBPACK] Webpack source map (ok)","pathname":"/javascript/advanced/webpack-source-map-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-source-map-Qbq5QmNz5D8"},{"id":"-MRt06WT4bwsVIfdk9Im","title":"Simple  use jQuery with TypeScript (ok)","pathname":"/javascript/advanced/simple-use-jquery-with-typescript-ok","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/32050645/how-to-use-jquery-with-typescript"},{"id":"-MIKTbshPUdIifHmNXl1","title":"[WEBPACK] Webpack import jQuery (ok)","pathname":"/javascript/advanced/webpack-import-jquery-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-import-jquery-XL6lA94rlek"},{"id":"-MIKTkPdZOca4zheLXHp","title":"[WEBPACK] Webpack import jQuery - Bootstrap (ok)","pathname":"/javascript/advanced/webpack-import-jquery-bootstrap-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-import-jquery-bootstrap-Ljy5VqyGlra"},{"id":"-MIKW9uKB3XPtHx_9h__","title":"[WEBPACK] Webpack import jQuery - Materialize","pathname":"/javascript/advanced/webpack-import-jquery-materialize","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-import-jquery-materialize-m68Z0WWzKkG"},{"id":"-MIKYU_BADyWNzWoSRcJ","title":"[WEBPACK] Webpack từ A đến Á: Code Splitting","pathname":"/javascript/advanced/webpack-tu-a-den-a-code-splitting","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-code-splitting-1Je5EyPG5nL"},{"id":"-MIK_RndRZBu1TYjACd9","title":"[WEBPACK] Webpack từ A đến Á: Webpack resolve alias - extensions","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-resolve-alias-extensions","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-resolve-alias-extensions-naQZRL4Q5vx"},{"id":"-MIK_zrWsoMpX0H7S-44","title":"[WEBPACK] Config alias chuẩn trong webpack","pathname":"/javascript/advanced/config-alias-chuan-trong-webpack","siteSpaceId":"sitesp_xQRWC","description":"https://kipalog.com/posts/Config-alias-chuan-trong-webpack"},{"id":"-MIKatoNx6n4YjB-aGXk","title":"[WEBPACK] Webpack từ A đến Á: Webpack Babel Loader","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-babel-loader","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-babel-loader-WAyK87o65xX"},{"id":"-MIKbZPG2ZWCxSXPU4qR","title":"[WEBPACK]  Webpack từ A đến Á: Webpack Eslint Loader","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-eslint-loader","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-eslint-loader-Ljy5VqQ3lra"},{"id":"-MIMSC3czz80Kq1DYiaI","title":"[WEBPACK]  Webpack từ A đến Á: Webpack Url Loader (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-url-loader","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-url-loader-L4x5x3MqlBM"},{"id":"-MIPIW3nDGXZj4Pk54oX","title":"[WEBPACK]  Webpack từ A đến Á: Webpack File Loader","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-file-loader","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-file-loader-3Q75wn9JlWb"},{"id":"-MIRfk1qU1QH7EeOAJiz","title":"[WEBPACK]  Webpack từ A đến Á: Webpack Style Loader (ok)","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-style-loader-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-style-loader-ByEZk2Q4KQ0"},{"id":"-MIRfxbKXMOeo7OCr3Mz","title":"[WEBPACK]  Webpack từ A đến Á: Webpack Css Loader","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-css-loader","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-css-loader-bWrZn07n5xw"},{"id":"-MIRhsPpR-LuctxANDjq","title":"[WEBPACK]  Webpack từ A đến Á: Webpack Sass Loader","pathname":"/javascript/advanced/webpack-tu-a-den-a-webpack-sass-loader","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-a-den-a-webpack-sass-loader-aWj533GP56m"},{"id":"-MISf6j2irazq83v740y","title":"[WEBPACK] [SPITEST] Teach you how to use webpack to generate css sprites","pathname":"/javascript/advanced/webpack-spitest-teach-you-how-to-use-webpack-to-generate-css-sprites","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@learncss/s/cssadvand/spitest-teach-you-how-to-use-webpack-to-generate-css-sprites"},{"id":"-MIPLI8NR-th3BvFVble","title":"Page learn webpack good","pathname":"/javascript/advanced/page-learn-webpack-good","siteSpaceId":"sitesp_xQRWC","description":"https://survivejs.com/webpack/developing/getting-started/"},{"id":"-MIPDeJwHAyT4EhWfoeu","title":"Remove unused CSS styles from Bootstrap using PurgeCSS (ok)","pathname":"/javascript/advanced/remove-unused-css-styles-from-bootstrap-using-purgecss-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@learncss/s/cssadvand/remove-unused-css-styles-from-bootstrap-using-purgecss-ok"},{"id":"-MIJ7mwGsGx6sk5tkHJn","title":"[WEBPACK] Webpack cho người mới bắt đầu (ok)","pathname":"/javascript/advanced/webpack-webpack-cho-nguoi-moi-bat-dau-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-cho-nguoi-moi-bat-dau-DzVkpogVenW"},{"id":"-MIJ8Z4dpkqnM7dm8GfP","title":"[WEBPACK]  cấu hình output (ok)","pathname":"/javascript/advanced/webpack-cau-hinh-output-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-ve-webpack-LzD5dJEdZjY"},{"id":"-M37t3RN20QqAkZuu_oY","title":"[WEBPACK] Dùng webpack để sử dụng từ khóa import, export (ok)","pathname":"/javascript/advanced/dung-webpack-de-su-dung-tu-khoa-import-export","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-MIJ08PkhDoOCqISmDpm","title":"[WEBPACK] Từ cơ bản đến nâng cao","pathname":"/javascript/advanced/webpack-webpack-tu-co-ban-den-nang-cao","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/webpack-tu-co-ban-den-nang-cao-WAyK8dRmKxX"},{"id":"-MhH4kKpvAftfbH2Dz1S","title":"[WEBPACK] Tăng Tốc Độ và Tối Ưu Hoá Website Bằng CSS Sprites (ok)","pathname":"/javascript/advanced/webpack-tang-toc-do-va-toi-uu-hoa-website-bang-css-sprites-ok","siteSpaceId":"sitesp_xQRWC","description":"https://app.gitbook.com/@learncss/s/cssadvand/tang-toc-do-va-toi-uu-hoa-website-bang-css-sprites"},{"id":"-MIMRjAGOBCIbaBC-c61","title":"------------------------ End webpack ----------------------","pathname":"/javascript/advanced/end-webpack","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M3KfEo0KZ4mwDzivoho","title":"How to convert unordered list into nicely styled <select> dropdown using jquery? (ok)","pathname":"/javascript/advanced/how-to-convert-unordered-list-into-nicely-styled-less-than-select-greater-than-dropdown-using-jquery","siteSpaceId":"sitesp_xQRWC","description":"https://stackoverflow.com/questions/1897129/how-to-convert-unordered-list-into-nicely-styled-select-dropdown-using-jquery"},{"id":"ofbVpZTgv7V90Gwvfqzn","title":"Lazy loading images using event handlers 1","pathname":"/javascript/advanced/lazy-loading-images-using-event-handlers-1","siteSpaceId":"sitesp_xQRWC","emoji":"1f606"},{"id":"QDvTeMxqXnKriETRk2ZV","title":"Layload ajax && background 2","pathname":"/javascript/advanced/layload-ajax-and-and-background-2","siteSpaceId":"sitesp_xQRWC","emoji":"1f604"},{"id":"PLlonTGOsvfmLx9WiNt7","title":"jQuery Lazy 3","pathname":"/javascript/advanced/jquery-lazy-3","siteSpaceId":"sitesp_xQRWC","description":"http://jquery.eisbehr.de/lazy/example_basic-usage"},{"id":"DHGntkn3wHTV2wHyR4cb","title":"jQuery lazyload 4","pathname":"/javascript/advanced/jquery-lazyload-4","siteSpaceId":"sitesp_xQRWC","description":"https://www.itsolutionstuff.com/post/how-to-implement-lazy-loading-image-with-example-for-your-websiteexample.html#google_vignette"},{"id":"-M5f-gO-Eh0hQK28W2as","title":"Config lazySizesConfig   lazysizes.min.js  lazysizes(ok)","pathname":"/javascript/advanced/config-lazysizesconfig-lazysizes.min.js-lazysizes-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"UBXSSwMrCOiAgxJDLfvv","title":"Lazy loading images using event handlers (ok)","pathname":"/javascript/advanced/lazy-loading-images-using-event-handlers-ok","siteSpaceId":"sitesp_xQRWC","description":"https://codepen.io/imagekit_io/pen/MBNwKB"},{"id":"-M8x5ZwVhnRe-4AH_eQG","title":"GIỚI THIỆU THƯ VIỆN LAZYSIZES.JS ĐỂ LAZY LOAD ẢNH (PHẦN 1)","pathname":"/javascript/advanced/gioi-thieu-thu-vien-lazysizes.js-de-lazy-load-anh-phan-1","siteSpaceId":"sitesp_xQRWC","description":"https://kiencang.net/lazysizes-js-lazy-load-anh-p1/"},{"id":"-M8x69U2WlMkEhME1k4t","title":"GIỚI THIỆU THƯ VIỆN LAZYSIZES.JS ĐỂ LAZY LOAD ẢNH (PHẦN 2)","pathname":"/javascript/advanced/gioi-thieu-thu-vien-lazysizes.js-de-lazy-load-anh-phan-2","siteSpaceId":"sitesp_xQRWC","description":"https://kiencang.net/lazysizes-js-lazy-load-anh-p2/"},{"id":"-M8xCoo-C8dunKck7LYW","title":"GIỚI THIỆU THƯ VIỆN LAZYSIZES.JS ĐỂ LAZY LOAD ẢNH (PHẦN 3)","pathname":"/javascript/advanced/gioi-thieu-thu-vien-lazysizes.js-de-lazy-load-anh-phan-3","siteSpaceId":"sitesp_xQRWC","description":"https://kiencang.net/lazysizes-js-lazy-load-anh-p3/"},{"id":"-M8xEH1VM_75KBSEY8aB","title":"Native lazy-loading for the web (ok)","pathname":"/javascript/advanced/native-lazy-loading-for-the-web-ok","siteSpaceId":"sitesp_xQRWC","description":"https://web.dev/native-lazy-loading/ tieng việt https://kiencang.net/native-lazy-loading-cho-web/"},{"id":"-M8xTAMdcmI4qiqpGvaz","title":"Tầm quan trọng của thuộc tính sizes, srcset trong thẻ img (ok)","pathname":"/javascript/advanced/tam-quan-trong-cua-thuoc-tinh-sizes-srcset-trong-the-img-ok","siteSpaceId":"sitesp_xQRWC","description":"http://vuilaptrinh.com/2018-07-30-huong-dan-tam-quan-trong-cua-thuoc-tinh-sizes-trong-the-img/"},{"id":"-M8xQH_Pt98qQMBwHY9K","title":"Thực hành lazysizes.min.js","pathname":"/javascript/advanced/thuc-hanh-lazysizes.min.js","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M5f6TUqCnRSffPWK1_T","title":"Check image img exits vieclam123.vn (ok)","pathname":"/javascript/advanced/check-image-img-exits-vieclam123.vn-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M737-NLMqabdOQuYkv2","title":"Nestable - Drag & drop hierarchical list with mouse and touch compatibility (ok)","pathname":"/javascript/advanced/nestable-drag-and-drop-hierarchical-list-with-mouse-and-touch-compatibility-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/nestable-drag-drop-hierarchical-list-with-mouse-and-touch-compatibility-07LKXOn25V4"},{"id":"-M7Va3ftABJ1qZpkIXNq","title":"Cấu hình tawk chat web500.vn ( ok)","pathname":"/javascript/advanced/cau-hinh-tawk-chat-web500.vn-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M8H3oVWASBoO-zF9-I0","title":"Cùng tìm hiểu plugin Jquery Validation","pathname":"/javascript/advanced/untitled","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M8GotX4uMRbqvFbvja5","title":"Tìm hiểu về Jquery Validation (Phần 1) (ok)","pathname":"/javascript/advanced/tim-hieu-ve-jquery-validation-phan-1-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-ve-jquery-validation-phan-1-E375zEqRlGW"},{"id":"-M8H0lNmDVw9D_flnUZg","title":"Tìm hiểu về Jquery Validation (Phần 2) (ok)","pathname":"/javascript/advanced/tim-hieu-ve-jquery-validation-phan-2-ok","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-ve-jquery-validation-phan-2-bJzKmM2YK9N"},{"id":"-M8YLIFiXdy-Z6wj7I_y","title":"Tìm hiểu về hộp thoại Sweet alert 2","pathname":"/javascript/advanced/tim-hieu-ve-hop-thoai-sweet-alert-2","siteSpaceId":"sitesp_xQRWC","description":"https://viblo.asia/p/tim-hieu-ve-hop-thoai-sweet-alert-2-XQZkxdblkwA"},{"id":"jgOEoMmPMUDqopiXQfQK","title":"Multi-table,Multi table (ok)","pathname":"/javascript/advanced/multi-table-multi-table-ok","siteSpaceId":"sitesp_xQRWC","description":"https://github.com/codeanddeploy/Jquery-Table-Check-All-Plugin"},{"id":"oQDEwBryepGPFgLx1Gdf","title":"SweetAlert2  getHtmlContainer (ok)","pathname":"/javascript/advanced/sweetalert2-gethtmlcontainer-ok","siteSpaceId":"sitesp_xQRWC","description":"https://sweetalert2.github.io/#examples"},{"id":"reCUbO9MRG3slVmnoHGO","title":"AJAX request preConfirm (ok)","pathname":"/javascript/advanced/ajax-request-preconfirm-ok","siteSpaceId":"sitesp_xQRWC","description":"https://sweetalert2.github.io/#examples"},{"id":"-M8YcmXcv5vhTI2zIXbe","title":"sử dụng php kết hợp Sweetalert2 (ok)","pathname":"/javascript/advanced/su-dung-php-ket-hop-sweetalert2-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M8YgoKsD4MpA6-GFZLJ","title":"Một ví dụ tuyệt vời Ajax SweetAlert for Live Data Deleting Rows in with PHP~MySQL~Ajax (ok)","pathname":"/javascript/advanced/mot-vi-du-tuyet-voi-ajax-sweetalert-for-live-data-deleting-rows-in-with-php-mysql-ajax-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M8ZqLpGhA2_w8iaAceD","title":"SweetAlert makes popup messages easy and pretty (page learn) (kiể cũ)","pathname":"/javascript/advanced/sweetalert-makes-popup-messages-easy-and-pretty-page-learn","siteSpaceId":"sitesp_xQRWC","description":"https://sweetalert.js.org/"},{"id":"-M8Zyzpediys3SZWxaHz","title":"sweetalert bản chuẩn (ok)","pathname":"/javascript/advanced/sweetalert-ban-chuan-ok","siteSpaceId":"sitesp_xQRWC","description":"https://sweetalert.js.org/"},{"id":"-M8_AlR9tw0f5ByEaq5u","title":"AJAX requests (ok)","pathname":"/javascript/advanced/ajax-requests-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M8_KL9opsGoW4NjbWp0","title":"sweetalert2 bản chuẩn (ok) cái này dùng hay hơn sweetalert (ok)","pathname":"/javascript/advanced/sweetalert2-ban-chuan-ok-cai-nay-dung-hay-hon-sweetalert-ok","siteSpaceId":"sitesp_xQRWC","description":"https://sweetalert2.github.io/"},{"id":"-M8bCLrimU67ZkCwz8f6","title":"Toast (ok)","pathname":"/javascript/advanced/toast-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M8bGcE5s_HkO2iQp1D3","title":"Email (ok)","pathname":"/javascript/advanced/email-ok","siteSpaceId":"sitesp_xQRWC","description":""},{"id":"-M9Mj01ZWM9PkpxMwM6H","title":"jQuery trigger() Method","pathname":"/javascript/advanced/jquery-trigger-method","siteSpaceId":"sitesp_xQRWC","description":"https://www.w3schools.com/jquery/event_trigger.asp"},{"id":"-M9WEHw7cIk4Zy2vWkob","title":"jQuery one() Method (ok)","pathname":"/javascript/advanced/jquery-one-method-ok","siteSpaceId":"sitesp_xQRWC","description":"https://www.w3schools.com/jquery/event_one.asp"},{"id":"feeYzf7TlV2Dz4hZimON","title":"Typescript Gheatsheet Git","pathname":"/javascript/type-script","siteSpaceId":"sitesp_E7jvW","emoji":"1f437"},{"id":"DYDz7bx440v3yeRlbGuB","title":"[GSAP] ví dụ sử dụng gsap js chuyển sang gsap typescript (ok)","pathname":"/javascript/type-script/gsap-vi-du-su-dung-gsap-js-chuyen-sang-gsap-typescript-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f600"},{"id":"SLsoblg2Xm2MiOXD25Ql","title":"stagger (lảo đảo) xuất hiện dần dần từng block, bạn hiểu  block stagger và  group stagger (ok)","pathname":"/javascript/type-script/gsap-vi-du-su-dung-gsap-js-chuyen-sang-gsap-typescript-ok/stagger-lao-dao-xuat-hien-dan-dan-tung-block-ban-hieu-block-stagger-va-group-stagger-ok","siteSpaceId":"sitesp_E7jvW","breadcrumbs":[{"label":"[GSAP] ví dụ sử dụng gsap js chuyển sang gsap typescript (ok)","emoji":"1f600"}]},{"id":"kIl5Oq4HSN3q4XjpyDSz","title":"Nghiên cứu class scrollingEffect 👌","pathname":"/javascript/type-script/nghien-cuu-class-scrollingeffect","siteSpaceId":"sitesp_E7jvW","icon":"1"},{"id":"ZcDJQD6hUfEs1SRHwbu8","title":"Viết lại fadin sử dụng trong theme Astra (ok)","pathname":"/javascript/type-script/viet-lai-fadin-su-dung-trong-theme-astra-ok","siteSpaceId":"sitesp_E7jvW"},{"id":"qstEnmql8Iov6QcRRZDb","title":"Kiểu NonNullable<T> được sử dụng để loại bỏ các kiểu null và undefined khỏi kiểu T (ok)","pathname":"/javascript/type-script/kieu-nonnullable-less-than-t-greater-than-duoc-su-dung-de-loai-bo-cac-kieu-null-va-undefined-khoi-ki","siteSpaceId":"sitesp_E7jvW"},{"id":"i034UPyNPXarufy7IvLb","title":"Tìm hiểu namspace, mở rộng namspace (ok)","pathname":"/javascript/type-script/tim-hieu-namspace-mo-rong-namspace-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f607"},{"id":"t8GwB9qmt32EVFZUWMAS","title":"-- Cấu hình tsconfig.json để không sử dụng reference nữa (ok)","pathname":"/javascript/type-script/tim-hieu-namspace-mo-rong-namspace-ok/cau-hinh-tsconfig.json-de-khong-su-dung-reference-nua-ok","siteSpaceId":"sitesp_E7jvW","breadcrumbs":[{"label":"Tìm hiểu namspace, mở rộng namspace (ok)","emoji":"1f607"}]},{"id":"tQtJ3gsRmnKHTDcZVhcB","title":"-- Ví dụ Mở rộng namespace trong typescript 2 file khác nhau và những chú ý (ok)","pathname":"/javascript/type-script/tim-hieu-namspace-mo-rong-namspace-ok/vi-du-mo-rong-namespace-trong-typescript-2-file-khac-nhau-va-nhung-chu-y-ok","siteSpaceId":"sitesp_E7jvW","breadcrumbs":[{"label":"Tìm hiểu namspace, mở rộng namspace (ok)","emoji":"1f607"}]},{"id":"zpyyHXLFjbJwNCkghOVs","title":"Mở rộng hoặc ghi đè interface đã khai báo trong file index.d.ts với thuộc tính initialData (ok)","pathname":"/javascript/type-script/tim-hieu-namspace-mo-rong-namspace-ok/mo-rong-hoac-ghi-de-interface-da-khai-bao-trong-file-index.d.ts-voi-thuoc-tinh-initialdata-ok","siteSpaceId":"sitesp_E7jvW","breadcrumbs":[{"label":"Tìm hiểu namspace, mở rộng namspace (ok)","emoji":"1f607"}]},{"id":"1znNPxeinbbNITtPByew","title":"Property 'error' does not exist on type 'Session' (ok)","pathname":"/javascript/type-script/tim-hieu-namspace-mo-rong-namspace-ok/property-error-does-not-exist-on-type-session-ok","siteSpaceId":"sitesp_E7jvW","icon":"1","breadcrumbs":[{"label":"Tìm hiểu namspace, mở rộng namspace (ok)","emoji":"1f607"}]},{"id":"Yh7wBZvfI1A14iU8kaDo","title":"Cách mở rộng interface Options trong axios-hooks một ví dụ quá hay (ok)","pathname":"/javascript/type-script/tim-hieu-namspace-mo-rong-namspace-ok/cach-mo-rong-interface-options-trong-axios-hooks-mot-vi-du-qua-hay-ok","siteSpaceId":"sitesp_E7jvW","icon":"1","breadcrumbs":[{"label":"Tìm hiểu namspace, mở rộng namspace (ok)","emoji":"1f607"}]},{"id":"yEVN6oMbnmAS9r2F4MCr","title":"Kiểu Generics là gì hãy giải thích rõ và vĩ dụ giúp tôi dễ hiểu?","pathname":"/javascript/type-script/kieu-generics-la-gi-hay-giai-thich-ro-va-vi-du-giup-toi-de-hieu","siteSpaceId":"sitesp_E7jvW","emoji":"1f970"},{"id":"DxI1NhPaqTVb3a3hi3T2","title":"Lấy giá trị từ object một cách an toàn 😁","pathname":"/javascript/type-script/kieu-generics-la-gi-hay-giai-thich-ro-va-vi-du-giup-toi-de-hieu/lay-gia-tri-tu-object-mot-cach-an-toan","siteSpaceId":"sitesp_E7jvW","breadcrumbs":[{"label":"Kiểu Generics là gì hãy giải thích rõ và vĩ dụ giúp tôi dễ hiểu?","emoji":"1f970"}]},{"id":"W4UPaNSVrRQaX1W0J6e7","title":"Cấu hình này rất quan trọng \"lib\" nó giúp chạy js trực tiếp trong trình duyệt (ok) 😍","pathname":"/javascript/type-script/cau-hinh-nay-rat-quan-trong-lib-no-giup-chay-js-truc-tiep-trong-trinh-duyet-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1fae2","description":"https://stackoverflow.com/questions/50986494/what-does-the-typescript-lib-option-really-do"},{"id":"1Aorn8cYz8LvKUmlmUaX","title":"Cấu hình  import các module không cần dấu . (ok)","pathname":"/javascript/type-script/cau-hinh-import-cac-module-khong-can-dau-.-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f60d"},{"id":"wDlUOlcXpl3ep6lVubI9","title":"DefinitelyTyped (@types)","pathname":"/javascript/type-script/definitelytyped-types","siteSpaceId":"sitesp_E7jvW","emoji":"1f60d","description":"https://github.com/DefinitelyTyped/DefinitelyTyped/"},{"id":"ivewPrpetgzD639hvHEA","title":"Allow JavaScript files to be a part of your program allowJs\": true (ok)","pathname":"/javascript/type-script/allow-javascript-files-to-be-a-part-of-your-program-allowjs-true-ok","siteSpaceId":"sitesp_E7jvW"},{"id":"ZKkI0knZb3IlhTnhELNl","title":"Trình duyệt không có require, nhưng Node.js thì có. Với Browserify để trình duyệt cũng có (ok)","pathname":"/javascript/type-script/trinh-duyet-khong-co-require-nhung-node.js-thi-co.-voi-browserify-de-trinh-duyet-cung-co-ok","siteSpaceId":"sitesp_E7jvW","description":"https://learnreact.gitbook.io/learnreact/advanced-javascript/trinh-duyet-khong-co-require-nhung-node.js-thi-co.-voi-browserify-de-trinh-duyet-cung-co-ok"},{"id":"Iyi2rRki9MpjPdGFJ66k","title":"Cách để compile file ts sang js chạy luôn trên trình duyệt (ok)","pathname":"/javascript/type-script/cach-de-compile-file-ts-sang-js-chay-luon-tren-trinh-duyet-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f600","description":"Đọc bài này có giải pháp tốt hơn: https://learnreact.gitbook.io/learnreact/type-script/cau-hinh-nay-rat-quan-trong-lib-no-giup-chay-js-truc-tiep-trong-trinh-duyet-ok"},{"id":"vYgO7dNktGeaeJmdbjhl","title":"What does \"tsc -p\" do in node CLI (ok)","pathname":"/javascript/type-script/what-does-tsc-p-do-in-node-cli-ok","siteSpaceId":"sitesp_E7jvW","description":"https://stackoverflow.com/questions/72497148/what-does-p-do-in-node-cli"},{"id":"8bOOT4wgWBA1OdziccZU","title":"Namespace, cách khai báo file .js chạy trong nền .ts, Tự động tạo .d.ts (ok)","pathname":"/javascript/type-script/namespace-cach-khai-bao-file-.js-chay-trong-nen-.ts-tu-dong-tao-.d.ts-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f600","description":"https://www.danielfullstack.com/article/stop-using-d-ts-files-in-typescript"},{"id":"sbjfbyCLuSG5tjB7sCgh","title":"Cách để khai báo 1 prop không được chấp nhận hoặc cảnh báo không tồn tại Full (ok)","pathname":"/javascript/type-script/cach-de-khai-bao-1-prop-khong-duoc-chap-nhan-hoac-canh-bao-khong-ton-tai-full-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f60d","description":"https://medium.com/innovation-and-technology/deciphering-typescripts-react-errors-8704cc9ef402"},{"id":"NNowcI9bJgx0cFa772a6","title":"Mini Website with TypeScript, compile  file ts chạy thời gian thực (ok)","pathname":"/javascript/type-script/mini-website-with-typescript-compile-file-ts-chay-thoi-gian-thuc-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f601"},{"id":"ge9u8riv42ERdqRegtfP","title":"😍 Không hiểu tại sao khi sử dụng nodemon.json nó mới chạy được?","pathname":"/javascript/type-script/mini-website-with-typescript-compile-file-ts-chay-thoi-gian-thuc-ok/khong-hieu-tai-sao-khi-su-dung-nodemon.json-no-moi-chay-duoc","siteSpaceId":"sitesp_E7jvW","emoji":"1f979","breadcrumbs":[{"label":"Mini Website with TypeScript, compile  file ts chạy thời gian thực (ok)","emoji":"1f601"}]},{"id":"fzyS2PsWErE6DPKFa78X","title":"Mini Website with TypeScript, html, .d.ts, cấu hình nodemon.json (ok)","pathname":"/javascript/type-script/mini-website-with-typescript-compile-file-ts-chay-thoi-gian-thuc-ok/khong-hieu-tai-sao-khi-su-dung-nodemon.json-no-moi-chay-duoc/mini-website-with-typescript-html-.d.ts-cau-hinh-nodemon.json-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1fae2","description":"https://github.com/bobbyhadz/typescript-property-does-not-exist-on-type-window","breadcrumbs":[{"label":"Mini Website with TypeScript, compile  file ts chạy thời gian thực (ok)","emoji":"1f601"},{"label":"😍 Không hiểu tại sao khi sử dụng nodemon.json nó mới chạy được?","emoji":"1f979"}]},{"id":"PtLe22ZOONx1L0Fb237x","title":"Property does not exist on type Window in TypeScript [Fixed]","pathname":"/javascript/type-script/mini-website-with-typescript-compile-file-ts-chay-thoi-gian-thuc-ok/khong-hieu-tai-sao-khi-su-dung-nodemon.json-no-moi-chay-duoc/property-does-not-exist-on-type-window-in-typescript-fixed","siteSpaceId":"sitesp_E7jvW","emoji":"1f643","description":"https://bobbyhadz.com/blog/typescript-property-does-not-exist-on-type-window","breadcrumbs":[{"label":"Mini Website with TypeScript, compile  file ts chạy thời gian thực (ok)","emoji":"1f601"},{"label":"😍 Không hiểu tại sao khi sử dụng nodemon.json nó mới chạy được?","emoji":"1f979"}]},{"id":"03UDHetmWqziRCBrI72L","title":"Làm thế nào để config interface global  (tệp .d.ts) cho TypeScript?","pathname":"/javascript/type-script/mini-website-with-typescript-compile-file-ts-chay-thoi-gian-thuc-ok/khong-hieu-tai-sao-khi-su-dung-nodemon.json-no-moi-chay-duoc/lam-the-nao-de-config-interface-global-tep-.d.ts-cho-typescript","siteSpaceId":"sitesp_E7jvW","emoji":"1f60d","breadcrumbs":[{"label":"Mini Website with TypeScript, compile  file ts chạy thời gian thực (ok)","emoji":"1f601"},{"label":"😍 Không hiểu tại sao khi sử dụng nodemon.json nó mới chạy được?","emoji":"1f979"}]},{"id":"ldBRdsnnBp5VmgSoRnEz","title":"TypeScript-React-Starter","pathname":"/javascript/type-script/typescript-react-starter","siteSpaceId":"sitesp_E7jvW"},{"id":"gTO9uXVjoBYr4Lar7HLh","title":"=== START TODO LIST ==","pathname":"/javascript/type-script/start-todo-list","siteSpaceId":"sitesp_E7jvW"},{"id":"KmyYnREKbX0LO88hY2pB","title":"Save, Get localStorage (ok)","pathname":"/javascript/type-script/save-get-localstorage-ok","siteSpaceId":"sitesp_E7jvW"},{"id":"2BCVP89Y4ljVVLBapDqf","title":"Add item, update state (ok)","pathname":"/javascript/type-script/add-item-update-state-ok","siteSpaceId":"sitesp_E7jvW"},{"id":"JtuehecrEwAuKXjEEn15","title":"=== END TODO LIST ==","pathname":"/javascript/type-script/end-todo-list","siteSpaceId":"sitesp_E7jvW"},{"id":"pErKABBAIsTm0gqUWYyI","title":"Material Form UI + ReactJS + TypeScript (phần 1)","pathname":"/javascript/type-script/material-form-ui-+-reactjs-+-typescript-phan-1","siteSpaceId":"sitesp_E7jvW","description":"https://viblo.asia/p/material-form-ui-reactjs-typescript-phan-1-L4x5xMWbKBM"},{"id":"JsNLSDXOV6byYmpaWTci","title":"Material Form UI + ReactJS + TypeScript (phần 2)","pathname":"/javascript/type-script/material-form-ui-+-reactjs-+-typescript-phan-2","siteSpaceId":"sitesp_E7jvW","description":"https://viblo.asia/p/material-form-ui-reactjs-typescript-phan-2-GrLZD3XeKk0"},{"id":"YpbbR40pWBdCYb798Pnx","title":"==== START TYPESCRIPT ==== (ok)","pathname":"/javascript/type-script/start-typescript-ok","siteSpaceId":"sitesp_E7jvW","description":"https://github.com/phamngoctuong/typescript-shop"},{"id":"47ryAHg3udsfqFsrnzaB","title":"[ERROR] exports is not defined (ok)","pathname":"/javascript/type-script/error-exports-is-not-defined-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f605","description":"https://bobbyhadz.com/blog/typescript-uncaught-referenceerror-exports-is-not-defined"},{"id":"EPF6uLtpacwhVuRsHxqT","title":"Đọc bài này để hiểu vài cấu hình Cấu hình tsconfig.json trong TypeScript (ok)","pathname":"/javascript/type-script/doc-bai-nay-de-hieu-vai-cau-hinh-cau-hinh-tsconfig.json-trong-typescript-ok","siteSpaceId":"sitesp_E7jvW","description":"https://viblo.asia/p/cau-hinh-tsconfigjson-trong-typescript-bWrZnAAvKxw"},{"id":"UacDtaPfDmEyAqyXTyW9","title":"Một bài mẫu để sử dụng html với typescript (ok)","pathname":"/javascript/type-script/mot-bai-mau-de-su-dung-html-voi-typescript-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f606"},{"id":"gQsBn36DQd6dDbMeiYBi","title":"Chuẩn bị giao diện","pathname":"/javascript/type-script/chuan-bi-giao-dien","siteSpaceId":"sitesp_E7jvW"},{"id":"C8q918Qq5XqxJu3RCZOr","title":"Một cách xuất trực tiếp js sử dụng cho html (ok)","pathname":"/javascript/type-script/mot-cach-xuat-truc-tiep-js-su-dung-cho-html-ok","siteSpaceId":"sitesp_E7jvW","description":"C:\\Users\\Administrator\\Desktop\\test\\src\\Index.ts"},{"id":"OnZ45r7i2EP6lxkB60cq","title":"Đã hoàn thiện code (ok)","pathname":"/javascript/type-script/da-hoan-thien-code-ok","siteSpaceId":"sitesp_E7jvW","emoji":"1f605"},{"id":"h1ifGn9MJneL0WVCHoI1","title":"Một nguồn typescirpt study","pathname":"/javascript/type-script/mot-nguon-typescirpt-study","siteSpaceId":"sitesp_E7jvW","description":"https://github.com/ramonszo/zuck.js"},{"id":"R2BUD51kkjuAOweoDxgo","title":"Export Class Product && ManageProduct(ok)","pathname":"/javascript/type-script/export-class-product-and-and-manageproduct-ok","siteSpaceId":"sitesp_E7jvW"},{"id":"DoE0Ws6Tq5pTedhxFuVg","title":"==== END TYPESCRIPT ==== (ok)","pathname":"/javascript/type-script/end-typescript-ok","siteSpaceId":"sitesp_E7jvW","description":"https://github.com/phamngoctuong/typescript-shop"},{"id":"yuHeNffajiUm6PDjMQFj","title":"=== START STUDY zuck.js ===","pathname":"/javascript/type-script/start-study-zuck.js","siteSpaceId":"sitesp_E7jvW"},{"id":"j55f8MVkKwGp87SSP7rP","title":"Initial commit: Carousel API (ok)","pathname":"/javascript/type-script/initial-commit-carousel-api-ok","siteSpaceId":"sitesp_E7jvW","description":"https://github.com/ramonszo/zuck.js"},{"id":"ZWxIUFQO08BAEBsl4aGL","title":"Modal base","pathname":"/javascript/type-script/modal-base","siteSpaceId":"sitesp_E7jvW"},{"id":"G06EvGJQehkq9BmJpc2Z","title":"Media viewer","pathname":"/javascript/type-script/media-viewer","siteSpaceId":"sitesp_E7jvW"},{"id":"GNavNk4PtLgSISk1Bqv0","title":"Start with typescirpt 👇🏽","pathname":"/javascript/type-script/start-with-typescirpt","siteSpaceId":"sitesp_E7jvW","description":"https://github.com/ramonszo/zuck.js/commit/4cb4776091d187a33a704044336297d062703369"},{"id":"cAz0eUpsMPQMoqrfKjO1","title":"=== END STUDY zuck.js ===","pathname":"/javascript/type-script/end-study-zuck.js","siteSpaceId":"sitesp_E7jvW"},{"id":"dCOMyAbSoeNu85hlk3Wu","title":"Study tween.js","pathname":"/javascript/type-script/study-tween.js","siteSpaceId":"sitesp_E7jvW"},{"id":"8QbZzxF4WQnxsqMXBq3K","title":"Lập trình TypeScript Decorator trong TypeScript","pathname":"/javascript/type-script/lap-trinh-typescript-decorator-trong-typescript","siteSpaceId":"sitesp_E7jvW","emoji":"1f972","description":"https://longnv.name.vn/lap-trinh-typescript/decorator-trong-typescript"},{"id":"vgr1YgUNZrPxjPbe83Rt","title":"basic types, definitions, decorators, modules (ok)","pathname":"/javascript/type-script/basic-types-definitions-decorators-modules-ok","siteSpaceId":"sitesp_E7jvW"}]}