资讯专栏INFORMATION COLUMN

WebPack2配置我的Vue开发环境

Sike / 2932人阅读

摘要:包中导出的默认是运行时构建。当然,我们期待的是只修改代码,不用重新运行命令,甚至不需要刷新浏览器即看到代码的改动效果,这时候需要新的插件来配置实现的热重载。

首先已经全局安装了node/vue/webpack;

新建文件夹demo4并初始化
cd demo4
npm init -y

这是页面会生成一个package.json文件。

安装webpack及相关插件
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服务器,我们使用它主要是为了实现代码的热重载,具体使用方法可参见webpack-dev-server使用方法,看完还不会的来找我~
vue-loader/vue-html-loader/css-loader/vue-style-loader...: webpack中loader的作用不多讲,用法看文档
vue-hot-reload-api: vue-hot-reload-api顾名思义,亦为实现vue热重载
此时package.json中的devDependenciesdependencies应该是这样的:

"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





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
        })
    ]
}

命令行运行webpack命令, 此时在dist文件目录下分别生成了js/index.js和index.html,在页面中打开index.html发现页面有报错: [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. 这是因为此时使用的是vue.runtime.common.js,这里可以阅读以下官方文档中的独立构建VS运行时构建;简单理解就是独立构建可以自己将字符串模板(template)编译为渲染函数(render),然后再运行时再调用编译好的渲染函数,而运行时构建是在Vue2开始后,为了实现在服务端渲染,不依赖与浏览器端的DOM接口,而不允许使用template模板,因此运行时构建比独立构建要小,但是不能使用template模板,而官方文档中也有说明。npm包中导出的默认是运行时构建。如果希望使用独立构建,可以添加以下代码

webpack中
resolve: {
  alias: {
    "vue$": "vue/dist/vue.common.js"
  }
}

这句话是添加到webpack.config.js中的,当然,我们也可以打开node_modules/vue/package.json文件,将其中的main指向"dist/vue.runtime.common.js"改为"vue/dist/vue.common.js"

此时再重新运行webpack命令,可能还会报错: Cannot find module "vue-template-compiler" ,此时在命令行中运行npm install vue-template-compiler即可。
在运行webpack命令,在浏览器中打开dist/index.html文件就可以看到代码完美运行了。我们只需要在src/下修改我们的Hello.vue或者是index.js以及index.html文件,然后运行webpack然后刷新页面即可看到代码的改动效果。
当然,我们期待的是只修改代码,不用重新运行webpack命令,甚至不需要刷新浏览器即看到代码的改动效果,这时候需要新的插件来配置实现vue的热重载。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86967.html

相关文章

  • 手把手教你用es6+vue2+webpack2+vue-router2搭建个人blog

    摘要:更新日志更新完成静态页面原型修复使用的正确姿势更新添加静态页面更新添加使用方法请戳我主要作用就是在你开发环节在后端同学还未开发完成的情况下,提供一个。 底下评论说是标题党,或者是光扔个github地址上来的同学我就不说什么了。你们有看看仓库的提交记录么?我还没有吃撑到开个仓库去骗star.我的出发点就是每天更新一部分代码,教大家用我所提到的技术栈搭建一个blog,我的出发点就是这么简单...

    weapon 评论0 收藏0
  • 基于 Webpack2Vue2、iView2 的可视化脚手架 iView Cli 发布 2.0 版

    摘要:多语言使用了的版本,并整合了的多语言和使用者自己的多语言配置,而且会根据用户系统的语言自动切换为中文和英文。 谷歌今天发布了一系列性感的软件,我们也发布了一款大家期待已久的开发者工具,同样很性感 :) iView 2.0 已经发布有两个月了,在 2.0 发布后,npm 下载量、issues 数量都提升了很多(可以 watch 下项目,感受感受邮件量)。两个月里,我们平均 1 周发布一个...

    MycLambert 评论0 收藏0
  • 应用vue2+vuex+vue-router+webpack2+es6+express+mysql技

    摘要:其实这里还是有漏洞的,坐等高手指出来微笑脸后台没有用生成一个完整的架构。来自不同视图的行为需要变更同一状态。 最近对vue很感兴趣,趁闲暇时间,模仿了wunderlist里面的部分功能,编写了前后端分离的基于vue技术栈和express的todolist小项目。写这篇博文来总结思考下。项目所在github,可以自行参考克隆。 本人博客 总体概览 整个项目最终做成的样子如下: showI...

    voidking 评论0 收藏0
  • 无痛学会各种 2 的 Vue2+Vuex2+Webpack2 前后端同构渲染

    摘要:它会检测出最大静态子树就是不需要动态性的子树并且从渲染函数中萃取出来。这样在每次重渲染的时候,它就会直接重用完全相同的同时跳过比对。需要注意的是,中的操作必须是同步的,不可以存在异步操作的情况。 新增:哈哈,最近又推出了 vue 的文章,在这里放个链接~手把手教你从零写一个简单的 VUE 感谢有人看我扯技术,这篇文章主要介绍最近非常火的vue2前端框架的特点和vue2+vuex2+we...

    fish 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<