摘要:包中導(dǎo)出的默認(rèn)是運(yùn)行時(shí)構(gòu)建。當(dāng)然,我們期待的是只修改代碼,不用重新運(yùn)行命令,甚至不需要刷新瀏覽器即看到代碼的改動(dòng)效果,這時(shí)候需要新的插件來配置實(shí)現(xiàn)的熱重載。
首先已經(jīng)全局安裝了node/vue/webpack;
新建文件夾demo4并初始化cd demo4 npm init -y
這是頁(yè)面會(huì)生成一個(gè)package.json文件。
安裝webpack及相關(guān)插件npm install webpack webpack-dev-server vue-loader vue-html-loader css-loader vue-style-loader vue-hot-reload-api babel-loader babel-core babel-plugin-transform-runtime babel-preset-es2015 babel-runtime@5 --save-dev npm install html-webpack-plugin --save-dev npm install vue --save
webpack-dev-server: webpack-dev-server是一款小型的Node.js Express服務(wù)器,我們使用它主要是為了實(shí)現(xiàn)代碼的熱重載,具體使用方法可參見webpack-dev-server使用方法,看完還不會(huì)的來找我~
vue-loader/vue-html-loader/css-loader/vue-style-loader...: webpack中l(wèi)oader的作用不多講,用法看文檔
vue-hot-reload-api: vue-hot-reload-api顧名思義,亦為實(shí)現(xiàn)vue熱重載
此時(shí)package.json中的devDependencies和dependencies應(yīng)該是這樣的:
"devDependencies": { "babel-core": "^6.23.1", "babel-loader": "^6.4.0", "babel-plugin-transform-runtime": "^6.23.0", "babel-preset-es2015": "^6.22.0", "babel-runtime": "^5.8.38", "css-loader": "^0.26.4", "vue-hot-reload-api": "^2.0.11", "vue-html-loader": "^1.2.4", "vue-loader": "^11.1.4", "vue-style-loader": "^2.0.3", "webpack": "^2.2.1", "webpack-dev-server": "^2.4.1" }, "dependencies": { "vue": "^2.2.2" }建立文件目錄
demo4 |__dist | |__js |__src | |__index.html | |__js | | |__index.js | |__components | |__hello.vue |__node_modules |__package.json |__webpack.config.js
dist: 存放生成的文件
src: 存放編輯的文件模板等
components: 存放components組件
src/index.html
Vue
src/js/index.js
import Vue from "vue"; import Hello from "../components/Hello.vue"; new Vue({ el: "#test", template: "", components: { Hello } })
src/components/Hello.vue
{{msg}}
webpack.config.js
var path = require("path"); var htmlWebpackPlugin = require("html-webpack-plugin"); module.exports = { entry: path.resolve(__dirname, "./src/js/index.js"), output: { path: path.resolve(__dirname, "./dist"), filename: "./js/[name].js" }, module: { loaders: [ { test: /.vue$/, loader: "vue-loader" }, { test: /.js$/, loader: "babel-loader", query:{ presets: "es2015" }, exclude: /node_modules/ } ] }, plugins: [ new htmlWebpackPlugin({ template: "./src/index.html", hash: true }) ] }
命令行運(yùn)行webpack命令, 此時(shí)在dist文件目錄下分別生成了js/index.js和index.html,在頁(yè)面中打開index.html發(fā)現(xiàn)頁(yè)面有報(bào)錯(cuò): [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build. 這是因?yàn)榇藭r(shí)使用的是vue.runtime.common.js,這里可以閱讀以下官方文檔中的獨(dú)立構(gòu)建VS運(yùn)行時(shí)構(gòu)建;簡(jiǎn)單理解就是獨(dú)立構(gòu)建可以自己將字符串模板(template)編譯為渲染函數(shù)(render),然后再運(yùn)行時(shí)再調(diào)用編譯好的渲染函數(shù),而運(yùn)行時(shí)構(gòu)建是在Vue2開始后,為了實(shí)現(xiàn)在服務(wù)端渲染,不依賴與瀏覽器端的DOM接口,而不允許使用template模板,因此運(yùn)行時(shí)構(gòu)建比獨(dú)立構(gòu)建要小,但是不能使用template模板,而官方文檔中也有說明。npm包中導(dǎo)出的默認(rèn)是運(yùn)行時(shí)構(gòu)建。如果希望使用獨(dú)立構(gòu)建,可以添加以下代碼
webpack中 resolve: { alias: { "vue$": "vue/dist/vue.common.js" } }
這句話是添加到webpack.config.js中的,當(dāng)然,我們也可以打開node_modules/vue/package.json文件,將其中的main指向"dist/vue.runtime.common.js"改為"vue/dist/vue.common.js"。
此時(shí)再重新運(yùn)行webpack命令,可能還會(huì)報(bào)錯(cuò): Cannot find module "vue-template-compiler" ,此時(shí)在命令行中運(yùn)行npm install vue-template-compiler即可。
在運(yùn)行webpack命令,在瀏覽器中打開dist/index.html文件就可以看到代碼完美運(yùn)行了。我們只需要在src/下修改我們的Hello.vue或者是index.js以及index.html文件,然后運(yùn)行webpack然后刷新頁(yè)面即可看到代碼的改動(dòng)效果。
當(dāng)然,我們期待的是只修改代碼,不用重新運(yùn)行webpack命令,甚至不需要刷新瀏覽器即看到代碼的改動(dòng)效果,這時(shí)候需要新的插件來配置實(shí)現(xiàn)vue的熱重載。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/86967.html
摘要:更新日志更新完成靜態(tài)頁(yè)面原型修復(fù)使用的正確姿勢(shì)更新添加靜態(tài)頁(yè)面更新添加使用方法請(qǐng)戳我主要作用就是在你開發(fā)環(huán)節(jié)在后端同學(xué)還未開發(fā)完成的情況下,提供一個(gè)。 底下評(píng)論說是標(biāo)題黨,或者是光扔個(gè)github地址上來的同學(xué)我就不說什么了。你們有看看倉(cāng)庫(kù)的提交記錄么?我還沒有吃撐到開個(gè)倉(cāng)庫(kù)去騙star.我的出發(fā)點(diǎn)就是每天更新一部分代碼,教大家用我所提到的技術(shù)棧搭建一個(gè)blog,我的出發(fā)點(diǎn)就是這么簡(jiǎn)單...
摘要:多語(yǔ)言使用了的版本,并整合了的多語(yǔ)言和使用者自己的多語(yǔ)言配置,而且會(huì)根據(jù)用戶系統(tǒng)的語(yǔ)言自動(dòng)切換為中文和英文。 谷歌今天發(fā)布了一系列性感的軟件,我們也發(fā)布了一款大家期待已久的開發(fā)者工具,同樣很性感 :) iView 2.0 已經(jīng)發(fā)布有兩個(gè)月了,在 2.0 發(fā)布后,npm 下載量、issues 數(shù)量都提升了很多(可以 watch 下項(xiàng)目,感受感受郵件量)。兩個(gè)月里,我們平均 1 周發(fā)布一個(gè)...
摘要:其實(shí)這里還是有漏洞的,坐等高手指出來微笑臉后臺(tái)沒有用生成一個(gè)完整的架構(gòu)。來自不同視圖的行為需要變更同一狀態(tài)。 最近對(duì)vue很感興趣,趁閑暇時(shí)間,模仿了wunderlist里面的部分功能,編寫了前后端分離的基于vue技術(shù)棧和express的todolist小項(xiàng)目。寫這篇博文來總結(jié)思考下。項(xiàng)目所在github,可以自行參考克隆。 本人博客 總體概覽 整個(gè)項(xiàng)目最終做成的樣子如下: showI...
摘要:它會(huì)檢測(cè)出最大靜態(tài)子樹就是不需要?jiǎng)討B(tài)性的子樹并且從渲染函數(shù)中萃取出來。這樣在每次重渲染的時(shí)候,它就會(huì)直接重用完全相同的同時(shí)跳過比對(duì)。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個(gè)鏈接~手把手教你從零寫一個(gè)簡(jiǎn)單的 VUE 感謝有人看我扯技術(shù),這篇文章主要介紹最近非常火的vue2前端框架的特點(diǎn)和vue2+vuex2+we...
閱讀 1930·2021-09-22 10:02
閱讀 2012·2021-09-02 15:40
閱讀 2903·2019-08-30 15:55
閱讀 2377·2019-08-30 15:44
閱讀 3654·2019-08-30 13:18
閱讀 3285·2019-08-30 11:00
閱讀 2024·2019-08-29 16:57
閱讀 624·2019-08-29 16:41