使用ES6+Vue+webpack+gulp构建新一代Web应用

1.推荐学习网站:Vue.js中国

2.Demo环境搭建:

2.1环境配置

安装nodejs环境,具体内容可以百度;

新建一个文件夹:

mkdir VUE-ES6-WebPack

  

全局安装gulp:

npm install gulp -g

  

全局安装webpack: 

npm install webpack -g

2.2webpack使用  

在VUE-ES6-WebPack目录先新建一个webpack.config.js文件,然而,webpack是啥?

它本身是一个打包工具,可以把js、css、image打包成一个或者多个js文件,并且可以支持各种loader作为插件对不同类型的文件做转换处理。

实际上webpack就是通过插件vue-loader在加载vue类型的文件时做格式转换,把vue类型文件翻译为浏览器可以识别的js文件。粘贴以下代码:

 1 module.exports = {
 2   // 这是一个入口文件
 3   entry: './resource/js/main.js',
 4   // 编译后的文件路径
 5   output: {
 6     //`dist`文件夹
 7     path: './resource/dist',
 8     // 文件 `build.js` 即 dist/build.js
 9     filename: 'build.js'
10   },
11   module: {
12     loaders: [
13       {
14         //处理ES6语法
15         test: /\.js$/,
16         //loader babel 
17         loader: 'babel',
18         exclude: /node_modules/
19       },
20       {
21        //处理.vue文件
22         test: /\.vue$/,
23         loader: 'vue'
24       }
25     ]
26   },
27   vue: {
28     loaders: {
29       js: 'babel'
30     }
31   }
32 }    

再新建一个package.json文件用于管理依赖:

 1 {
 2   "name": "test",
 3   "version": "1.0.0",
 4   "description": "",
 5   "main": "main.js",
 6   "scripts": {
 7     "test": "echo \"Error: no test specified\" && exit 1"
 8   },
 9   "author": "MonkeyWang",
10   "license": "ISC",
11   "dependencies": {
12     "babel-core": "^6.1.2",
13     "babel-loader": "^6.1.0",
14     "babel-plugin-transform-runtime": "^6.1.2",
15     "babel-preset-es2015": "^6.1.2",
16     "babel-preset-stage-0": "^6.1.2",
17     "babel-runtime": "^5.8.0",
18     "css-loader": "^0.23.0",
19     "gulp": "^3.9.1",
20     "jade-loader": "^0.8.0",
21     "style-loader": "^0.13.0",
22     "stylus": "^0.54.5",
23     "stylus-loader": "^2.3.1",
24     "template-html-loader": "0.0.3",
25     "then-jade": "^2.4.3",
26     "vue": "^2.1.0",
27     "vue-hot-reload-api": "^1.2.0",
28     "vue-html-loader": "^1.2.3",
29     "vue-loader": "^7.3.0",
30     "webpack": "^1.13.3"
31   }
32 }

新建gulpfile.js:

 1 var webpackConfig = require('./webpack.config.js');
 2 var gulp = require('gulp');
 3 var webpack = require("webpack");
 4 gulp.task("webpack", function(callback) {
 5   var myConfig = Object.create(webpackConfig);
 6   webpack(myConfig, function(err, stats) {
 7       callback();
 8     });
 9 });
10 gulp.task('watchVue',function(){
11   gulp.watch(['resource/js/**/*.vue','resource/js/**/*.js'], ['webpack']);
12 });

安装依赖:

npm install

通过webpack.config.js入口配置可以知道 我们需要新建入口文件,项目目录可以参考:

新建main.js:

import是ES6的模块语法。这里为了更多的体现Vue的功能,采用了vue的单文件组件,这里定义了一个App组件:

 1 /**
 2  * Created by monkeywang.
 3  */
 4 import Vue from '../../node_modules/vue/dist/vue'
 5 import App from './componets/app.vue'
 6 
 7 new Vue({
 8   el: '#app',
 9   data: {
10     message: "Hello Vue"
11   },
12   components: { App }
13 });

 

 

新建app.vue组件:

 1 <template>
 2   <div class="message">{{msg}}</div>
 3 </template>
 4 
 5 <script>
 6 export default {
 7   data () {
 8     return {
 9       msg: 'Hello Monkey Wang'
10     }
11   }
12 }
13 </script>
14 
15 <style lang="stylus" rel="stylesheet/stylus"> 
16 .message
17   color blue
18 </style>

当然<template></template>也可以使用jade模板引擎

 1 <template lang="jade">
 2 .message{{msg}}
 3 </template>
 4 
 5 <script>
 6 export default {
 7   data () {
 8     return {
 9       msg: 'Hello Monkey Wang'
10     }
11   }
12 }
13 </script>
14 
15 <style lang="stylus" rel="stylesheet/stylus">
16 .message
17   color blue
18 </style>

 

非常大的一个亮点!一个vue文件,内部js、css、html就都齐了,可以作为一个完整的、自包含的组件了。非常有趣的、我个人极为欣赏的web components就在此处了。

vue文件内的语法,当然不是浏览器所可以支持的,浏览器不认识它!魔术在于webpack+vue-loader+babel 。

webpack加载vue文件首先调用vue-loader,vue-loader会调用babel转换ES6代码为ES5代码,把css和html作为模块也转换为客户端js代码。这些js代码浏览器就可以识别了。

编译Vue:

gulp webpack

监听文件变动:

gulp watchVue

一切就绪,准备开始你的Vue.js和Es6的开发体验吧!  

  

 

 

 

 

  

posted @ 2016-11-23 17:41  muwoo  阅读(14051)  评论(4编辑  收藏  举报