之前剛學了一些Vue的皮毛於是寫了一個本地播放器https://github.com/liwenchi123000/Local-Music-Player,如果覺得ok的朋友可以給個star。
就是很簡單,由於是第一次用Vue寫小demo,所以代碼寫的有點蠢很裸的那種,不像大神那樣一看代碼組織的就很美。
但好就在於是和官網的文檔寫法差不多,為什么這么說呢,看接下來的就知道了。
有一次看到了別人寫的應用,點進去一看驚呆了
這咋還能這么寫呢?這html不用引用script嗎?
然后隨手在src里找到了幾個其他的文件
這都是啥???
但是20行到25行很熟悉,就是文檔里的。但是第24行有是個啥?(這個至今沒明白,希望大佬可以指點一二),但是這個main.js和index.html跟本就沒有關聯啊,第21行怎么綁定到dom元素上的?
然后又隨手找到了一個看起來應該很重要的文件App.vue
這寫的感覺很清晰很簡潔,和我一個好幾百行的js文件完全不一樣有木有...
所以就查了一下相關資料,才知道這是vue-cli的功勞,但是這個東西是真的勸退。。。。。。我踏馬看了一下午都沒搞懂這玩意雜用,於是果斷放棄,網上的各種文章視頻,以及各種文檔根本看的我頭疼,反正最后也沒寫出來啥玩意。反正那些教程各種復雜,網上找了個vue-cli的教程,webpack配置占了70%。
然后今天中午弄明白了怎么不使用vue-cli的情況下使用單文件組件(就是那個.vue文件)寫點小東西。也就是簡單的webpack + vue
-------------------------------------------------------------------------------------------------------------
1.先准備一個空文件夾
2.初始化項目
npm init
3.對當前文件夾安裝webpack
// --save-dev開發環境 npm install --save-dev webpack
4.先看一下最終的目錄結構
紅色箭頭指向的是npm或webpack自動生成的,其他的是我自己創建的
5.創建webpack.config.js
1 const path = require('path'); 2 3 module.exports = { 4 // 入口文件,我們假設是單入口 5 entry: { 6 main: './src/index.js' 7 }, 8 // 出口文件 9 output: { 10 path: path.resolve(__dirname, './dist'), 11 filename: 'bundle.js' 12 }, 13 module: { 14 // 當你import奇怪的后綴的時候webpack是看不懂的,他只認識js,所以需要一些奇怪的loader(加載器) 15 // 而且這些加載器要安裝,詳情見底下 16 rules: [ 17 { test: /\.css$/, use: 'css-loader' }, 18 { test: /\.ts$/, use: 'ts-loader' }, 19 { test: /\.vue$/, use: 'vue-loader' }, 20 { test: /\.less$/, use: 'less-loader' }, 21 ] 22 }, 23 devServer: {}, 24 plugins: [], 25 } 26 27 /* 28 使用loader前請先在項目中安裝對應的loader 29 例如: 30 npm install --save-dev css-loader vue-loader less-loader vue-template-compiler 31 npm install --save-dev ts-loader 32 常見loader: 33 1.模板: 34 35 (1)html-loader:將HTML文件導出編譯為字符串,可供js識別的其中一個模塊 36 37 (2)pug-loader : 加載pug模板 38 39 (3)jade-loader : 加載jade模板(是pug的前身,由於商標問題改名為pug) 40 41 (4)ejs-loader : 加載ejs模板 42 43 (5)handlebars-loader : 將Handlebars模板轉移為HTML 44 2.樣式: 45 46 (1)css-loader : 解析css文件中代碼 47 48 (2)style-loader : 將css模塊作為樣式導出到DOM中 49 50 (3)less-loader : 加載和轉義less文件 51 52 (4)sass-loader : 加載和轉義sass/scss文件 53 54 (5)postcss-loader : 使用postcss加載和轉義css/sss文件 55 3.腳本轉換編譯: 56 57 (1)script-loader : 在全局上下文中執行一次javascript文件,不需要解析 58 59 (2)babel-loader : 加載ES6+ 代碼后使用Babel轉義為ES5后瀏覽器才能解析 60 61 (3)typescript-loader : 加載Typescript腳本文件 62 63 (4)coffee-loader : 加載Coffeescript腳本文件 64 4.JSON加載: 65 66 (1)json-loader : 加載json文件(默認包含) 67 68 (2)json5-loader : 加載和轉義JSON5文件 69 5.Files文件 70 71 (1)raw-loader : 加載文件原始內容(utf-8格式) 72 73 (2)url-loader : 多數用於加載圖片資源,超過文件大小顯示則返回data URL 74 75 (3)file-loader : 將文件發送到輸出的文件夾並返回URL(相對路徑) 76 77 (4)jshint-loader : 檢查代碼格式錯誤 78 6.加載框架: 79 80 (1)vue-loader : 加載和轉義vue組件,這個似乎還需要安裝vue-template-compiler 81 82 (2)angualr2-template--loader : 加載和轉義angular組件 83 84 (3)react-hot-loader : 動態刷新和轉義react組件中修改的部分,基於webpack-dev-server插件需先安裝,然后在webpack.config.js中引用react-hot-loader 85 */
6.在./src/創建index.js
vue.js是vue的源文件,https://vuejs.org/js/vue.js
1 import Vue from './assert/vue.js'; 2 import Name from './componments/name.vue'; 3 4 var vm = new Vue({ 5 el: '#app', 6 data: { 7 msg: '你好' 8 }, 9 components: { 10 'myname': Name, 11 } 12 });
7.在./src/components下創一個name.vue
1 <template> 2 <div><h2>{{msg}}</h2></div> 3 </template> 4 5 <script> 6 export default { 7 data: function() { 8 return { 9 msg: 'Bob' 10 } 11 } 12 }; 13 </script> 14 15 16 <style> 17 h2 { 18 color: red; 19 } 20 </style>
8.在命令行里輸入"webpack --watch"
這個watch可以不用再輸命令
9.最終效果
10.希望對你有幫助