--- title: 20200901 Astro Camp js workshop tags: Astro Camp, javascript --- >20210707 更新 # 20200901 Astro Camp js workshop :::info repuire 跟 import 盡量使用 import ::: 先將 app/javascript 資料夾改名為 frontend > 因為裡面不只包含 javascript 新增 `script` 、`stylesheet` 兩個資料夾,在資料夾中各新增一個 `index.js`,用來 `import` 個別檔案用。 在 `app/frontend/pack/application.js`中 ,`require` 剛剛的資料夾 `yarn add bootstrap jquery @popper/core` > bootstrap 5 popper.js 是已經有包含在裡面的,所以要安裝 `@popper/core` 在 `app/frontend/script/index.js` 中 ```javascript= import "@popperjs/core/" import "jquery" import "bootstrap" ``` 打開 `bin/webpack-dev-server` 看錯誤訊息,少什麼裝什麼,然後在 import 到 `script/index.js` ```css= /* app/frontend/stylesheet/application.scss */ @import "~bootstrap/scss/bootstrap.scss"; ``` ```javascript= // app/frontend/stylesheet/index.js import "bootstrap/dist/css/bootstrap.css" import "./application.scss" ``` 要使用gem webpacker 的plugin 的設定檔設定 在config/webpack/environment.js ```ruby= const webpack = require('webpack') # 可以將東西變成全域,不用自己寫 import $ from 'jquery' environment.plugins.prepend( 'Provide', new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', jquery: 'jquery', moment: 'moment' # 'window.Tether': 'tether', # Popper: ['popper.js', 'default'], # ActionCable: 'actioncable', # Vue: 'vue', # VueResource: 'vue-resource', }) ) ``` 最後,在 `application.html.erb` 中, 將 `<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>` 改成 `<%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> ` ok desu ------------ 先yarn add selected2 在application.js ```javascript= import $ from 'jquery'; //還是抓不到$,把他綁在window的屬性上 window.$ = $ import 'select2' import 'select2/dist/css/select2.css' ``` 先 yarn add sweetalert 在application.js ```javascript= import swal from 'sweetalert2' document.addeventListener('turbolinks:load',function(){ swal('任何一个傻瓜都会用电脑') }) ``` 先 yarn add tempusdominus-bootstrap-4 import 'tempusdominus-bootstrap-4' 發現沒有jquery? 在裝 font-awsome 繼續import (別忘了css)