Laravel 使用 npm 安裝前端依賴;
npm 是一個相似 composer 的工具;
用於管理前端的各類依賴包;
在使用以前須要先安裝 node ;
Windows 下能夠在官網下載安裝: https://nodejs.org/zh-cn
Mac 上能夠經過 brew 安裝;javascript
node 已經捆綁了 npm 不須要單獨安裝 npm 了;
可是由於那堵牆的緣由還須要設置淘寶的 npm 鏡像;php
而後就能夠執行安裝命令了;css
在 Laravel 項目根目錄下有一個相似 composer.json 的 package.json 文件;html
當執行 npm install
的時候就和 composer install
同樣;
安裝完成後會生成 package-lock.json 文件;
想下 composer.lock 就能知道 package-lock.json 的做用了;
package.json 中的 scripts 和 composer.json 中的 script 做用也相似;
好比說上面的 dev script 就能夠經過下面這種方式運行:前端
在開發中經常使用下面這 3 個命令;
| 命令 | 做用 |
| dev | 編譯、合併 |
| prod | 編譯、合併、壓縮 |
| watch | 自動監聽文件變更進行編譯、合併 |
這些 script 都是依賴 webpack 來打包壓縮合並;
webpack 的配置對後端開發人員來講有那麼一點不直觀;
Laravel 官方又提供了 laravel-mix 來簡化 webpack ;
在 Laravel 項目根目錄中的 webpack.mix.js 就是 webpack 的配置文件;vue
這裏面分別定義了前端資源的源文件和處理後的目標文件路徑;
| 處理前的源文件 | 處理後的文件目錄 |
| resources/assets/js/app.js | public/js |
| resources/assets/sass/app.scss | public/css |
默認狀況下 resources/assets/js/app.js 中引入了 bootstrap.js 和 vue.js ;
這裏示例先只保留 bootstrap.js ;
resources/assets/js/app.jsjava
當咱們想使用某個前端插件的時候咱們能夠去 https://npmjs.com 上搜索;
這一步又跟 composer 的 https://packagist.org 一毛同樣;
掌握了 composer 的使用後再看 npm 也是能夠很快入手的;
好比說咱們想找一個 bootstrap 的日期插件; node
安裝插件;jquery
而後引入 css 文件;
resources/assets/sass/app.scsswebpack
引入 css 文件使用的是 import
;
路徑能夠點開 node_modules 目錄查看;
除了引用 node_modules 目錄下的文件還能夠引用本身建立的文件;
好比說建立一個 resources/assets/js/bootstrap-datepicker.js 文件;
引入 js 文件使用的是 require
;
在 resources/assets/js/app.js 中引入 bootstrap-datepicker ;
編譯合併壓縮:
建立示例路由 routes/web.php ;
建立視圖文件 resources/views/mix/view.blade.php ;
這裏使用 asset()
函數生成資源連接;
一個日期插件就這樣完成了;
查看源代碼能夠發現全部的 css 和 js 內容都合併成了 app.css 和 app.js;
可是如今還不完美;
由於當咱們改動文件後容易由於緩存不能及時加載新的 css 和 js ;
常見的作法是給 css 和 js 加個版本號;
這在 Laravel 也很容易實現;
只須要在 webpack.mix.js 中使用 version()
;
webpack.mix.js
視圖文件中把 asset()
換成 mix()
便可;
resources/views/mix/view.blade.php