vue 淺談前端建置工具

77
vuedinner #3 亮藳獮ᒒୌᗝૡ膏 Vue

Upload: andyyou

Post on 16-Jan-2017

1.094 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Vue 淺談前端建置工具

vuedinner #3

Vue

Page 2: Vue 淺談前端建置工具

@wainfo github: andyyou

2

Page 3: Vue 淺談前端建置工具

• webpack • vue-loader • vue-cli • vue templates (webpack) •

Page 4: Vue 淺談前端建置工具

• HTML • CSS • Javascript • Assets(Images, Fonts)

EB

Page 5: Vue 淺談前端建置工具

• HTML - Templates

• CSS - Sass, Less, PostCSS

• Javascript - Compile To Javascript

• Lint

• Debug Tools

Page 6: Vue 淺談前端建置工具
Page 7: Vue 淺談前端建置工具

• Bower, npm • Browserify, RequireJS • Grunt • gulp, fly • Brunch • webpack • jspm • rollup

Page 8: Vue 淺談前端建置工具

http://j.mp/2bhpkQL

Page 9: Vue 淺談前端建置工具
Page 10: Vue 淺談前端建置工具
Page 11: Vue 淺談前端建置工具
Page 12: Vue 淺談前端建置工具
Page 13: Vue 淺談前端建置工具

> ls -al | grep whoami

pipe

Page 14: Vue 淺談前端建置工具

gulp.src(paths.scripts) .pipe(sourcemaps.init()) .pipe(coffee()) .pipe(uglify()) .pipe(concat('all.min.js')) .pipe(sourcemaps.write()) .pipe(gulp.dest('build/js'));

Page 15: Vue 淺談前端建置工具

ES2015 Generator style

Page 16: Vue 淺談前端建置工具

Javascript

Page 17: Vue 淺談前端建置工具
Page 18: Vue 淺談前端建置工具

require('module')

Page 19: Vue 淺談前端建置工具

> npm install -g browserify > browserify [src] -o > [dist]

Page 20: Vue 淺談前端建置工具

webpack

Page 21: Vue 淺談前端建置工具

• •

• ES6 Module Loader Polypill • SystemJS Universal Dynamic Module Loader

Any type of module format can be loaded and it will be detected automatically by SystemJS.

Page 22: Vue 淺談前端建置工具

jspm?

Page 23: Vue 淺談前端建置工具
Page 24: Vue 淺談前端建置工具

http://j.mp/2aNmimZ

Page 25: Vue 淺談前端建置工具

webpack

Page 26: Vue 淺談前端建置工具

• npm +

• grunt, gulp

• requires, browserify

• webpack + ( )

• jspm + + + ( )

• rollup, fly,

Page 27: Vue 淺談前端建置工具

webpack •

• / (2014)

• HRM • loaders & plugins • Code Splitting (sync, async chunk) •

Page 28: Vue 淺談前端建置工具

webpack •

• /

• HRM • loaders & plugins • Code Splitting (sync, async chunk) •

Page 29: Vue 淺談前端建置工具

webpack

Page 30: Vue 淺談前端建置工具

...

Page 31: Vue 淺談前端建置工具

• •

• •

• •

webpack

Page 32: Vue 淺談前端建置工具

1. 1. 2.

2. 3. 4.

Page 33: Vue 淺談前端建置工具

vue with webpack

http://j.mp/2bzJl36

Page 34: Vue 淺談前端建置工具

# npm/nvm> mkdir vuedinner && cd vuedinner> npm init -y> npm i webpack -D

https://github.com/andyyou/vue-dinner-demo

Page 35: Vue 淺談前端建置工具

> webpack <entry> <output>> webpack e1.js e2.js bundle.js> webpack andyyou=./entry.js "[name].js">> output a andyyou.js file.

// webpack.config.jsmodule.exports = { output: { filename: "[name].bundle.js" }}

Page 36: Vue 淺談前端建置工具

1. index.html

2. main.js index.js

3.

4. webpack

Page 37: Vue 淺談前端建置工具

loaders

Javascript

Page 38: Vue 淺談前端建置工具

> npm i css-loader style-loader file-loader -D

!

Page 39: Vue 淺談前端建置工具

> webpack main.js bundle.js —output-public-path=‘/dist/' --module-bind 'css=style!css' --module-bind 'png=file'

Page 40: Vue 淺談前端建置工具
Page 41: Vue 淺談前端建置工具

webpack-dev-server + plugins

Page 42: Vue 淺談前端建置工具

> npm i webpack-dev-server -D

Page 43: Vue 淺談前端建置工具

• dll • css ( ) • , , , • HTML5 Cache mainfest • Offline (ServiceWorker) • HRM • s3 •

plugins

Page 44: Vue 淺談前端建置工具

ES2015 + Vue

Page 45: Vue 淺談前端建置工具

1.

2. webpack.config.js

3. .babelrc

4. ( Vue.js)

https://github.com/babel/babel-loader

Page 46: Vue 淺談前端建置工具

# webpack: webapck # webpack-dev-server: # webpack-merge: (webpack.config.js)# css-loader: css# style-loader: css html# file-loader: # url-loader: base64 # babel-core: ES2015 babel # babel-loader: ES2015 # babel-plugin-transform-runtime: polyfilling ( babel-runtime)# babel-preset-es2015: es2015 # babel-preset-stage-0: # babel-runtime: ES2015+ helpers, polyfilling `class MyClass {}` -> `_classCallCheck` AST # vue-loader: vue # vue-html-loader: vue template # vue-style-loader: vue # vue-hot-reload-api: Hot reload API for Vue components

Page 47: Vue 淺談前端建置工具
Page 48: Vue 淺談前端建置工具

vue-loader

vue-loader

Page 49: Vue 淺談前端建置工具
Page 50: Vue 淺談前端建置工具

• <template> • HTML • vue <template> •

• <script> • javascript ES2015 Babel • vue <script> • JS CommonJS require • import ES2015 • script Vue - Vue.extend()

• <style> • css • <style> • `sytle-loader` <head> <style> • webpack css

Page 51: Vue 淺談前端建置工具

src CommonJS require • ./ • module/dist/all.css npm

<template src="./template.html"></template><style src="./style.css"></style><script src="./script.js"></script>

Page 52: Vue 淺談前端建置工具

vue-style!css![options]!rewriter(postcss)

Source Code

• autpprefixer • scoped • postcss + cssnext

Page 53: Vue 淺談前端建置工具

vue-hot-reload-api 2.0.6

Hot Reload

Page 54: Vue 淺談前端建置工具
Page 55: Vue 淺談前端建置工具

vue-loader loader webpack loader jade-loader

function HTML String jade jade-loader

Page 56: Vue 淺談前端建置工具

• file-loader

• url-loader base64 HTTP request

url(image.png) > require(‘file!./image.png')

Page 57: Vue 淺談前端建置工具
Page 58: Vue 淺談前端建置工具

> npm i vue-loader vue-html-loader vue-style-loader vue-hot-reload-api@1 -D

# 1. webpack.config.js# 2. main.js app.vue

Page 59: Vue 淺談前端建置工具

> webpack-dev-server --inline --hot

Hot Module Replacement / Hot Reload

Page 60: Vue 淺談前端建置工具

webpack-dev-server

• Iframe mode

http://localhost:8080/webpack-dev-server/index.html • Inline mode

webpack-dev-server client entry bundle

Page 61: Vue 淺談前端建置工具

--hot

—hot = HotModuleReplacementPlugin

Page 62: Vue 淺談前端建置工具
Page 63: Vue 淺談前端建置工具
Page 64: Vue 淺談前端建置工具

https://github.com/webpack/webpack-dev-server/blob/2eef9e64e4528dfda756d61c627d4b5a49bbae8e/bin/webpack-dev-server.js#L240-L257

Page 65: Vue 淺談前端建置工具
Page 66: Vue 淺談前端建置工具

https://medium.com/@rajaraodv/webpack-the-confusing-parts-58712f8fcad9#.6z7z6wx8q

Page 67: Vue 淺談前端建置工具

JS

Page 68: Vue 淺談前端建置工具

+

Page 69: Vue 淺談前端建置工具
Page 70: Vue 淺談前端建置工具

vue-loader

vue-cli

> npm install -g vue-cli> vue init <template-name> <project-name>> vue init webpack v-project

Page 71: Vue 淺談前端建置工具

webpack

Page 72: Vue 淺談前端建置工具

webpack dev middleware plugins

• webpack dev middleware • webpack hot middleware • html-webpack-plugin • html-webpack-template • extract-text-webpack-plugin

Page 73: Vue 淺談前端建置工具

Vue - PASSER

Page 74: Vue 淺談前端建置工具
Page 75: Vue 淺談前端建置工具
Page 76: Vue 淺談前端建置工具
Page 77: Vue 淺談前端建置工具