Vue(基础七)_webpack打包工具(续)
---恢复内容开始---
一、前言
1、webpack-dev-server
2、es6的解析
3、单文件引入
二、主要内容
1、webpack-dev-server
(1)常用的配置参数
--open :自动打开浏览器
--hot: 热更新, 不在刷新的情况下替换Css样式
--inline: 自动刷新
--port 9999 指定端口
--process 显示编译进度
(2)下载
npm install webpack-dev-server@ --save-dev
(3)在package.json中配置
{
"name": "webpack-server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "webpack-dev-server --open --hot --inline --config ./webpack.dev.config.js" //webpack.dev.config.js这里是你当前的config文件
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^2.6.1",
"webpack-dev-server": "^2.9.0"
}
}
2、es6的解析
(1)模块介绍:
babel-core: 的作用是把js代码分析成ast(抽象语法树), 方便各个插件分析语法进行相应的处理。有些新的语法在低版本js中是不存在的,如箭头函数, rest参数, 函数参数默认值,这种语言层面的不兼容只能通过将代码转为ast, 分析其语法后转为低版本js. abel转义器本身提供了babel转义的API 如babel.transform等, 用于对代码进行转义,像webpack的babel.loader就是调用这些API来完成转义过程的。
babel-loader:在将es6的代码transform进行转义,就是通过babel-loader来完成
babel-preset-env: 如果要自行配置转义过程中需要的各类插件,那比较麻烦,babel帮助我们做了一些插件集合,为preset. 我们只需要使用对应的preset就可以。
babel-plugin-transform-runtime:
babel默认只转换新的js语法, 而不转换新的API , 要想使用这些新的对象和方法,必须用babel-plyfill
(2)下载对应的模块
npm install babel-core babel-loader babel-preset-env babel-plugin-transform-runtime -D
(3)项目目录如图所示
(4)在main.js中写一写es6语法如下:
console.log(11111)
console.log('hello') const app = '张三';
let a =14;
console.log(a); var obj=()=>{ } //new Promise();
(5)package.json中的配置如下:
{
"name": "webpack-server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "webpack-dev-server --open --hot --inline --config ./webpack.dev.config.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.7.0",
"webpack": "^2.6.1",
"webpack-dev-server": "^2.9.0"
}
}
(6)webpack.dev.config.js
// webpack ./main.js ./build.js
module.exports = {
// 入口
entry:{
// 可以有多个入口,也可以有一个,如果有一个就默认从这一个入口开始分析
"main":'./src/main.js'
},
output:{
filename:'./src/build.js'
},
watch:true, module:{
loaders:[{
//处理es6, 7 8
test:/\.js$/,
loader: 'babel-loader',
//exclude:/node_module/排除这里面的es6语法
exclude:/node_modules/,
options:{
presets: ['env'],//处理语法,关键字
plugins:['transform-runtime'], //处理函数
}
}]
}
}
(7)运行:npm run dev. 这里可能会出现错误,往往都是版本兼容性问题,(下低版的webpack就好了)
3、单文件引入
(1)项目结构如图所示
(2)下载包:注意这里的版本最好要一致
npm install vue-loader@2.5.15 vue-template-compiler@2.5.17 -D
npm install vue -S
(3)新建的.vue文件里面包含三部分内容
<template>
<!--当前组件结构-->
<div>
{{msg}}
</div>
</template> <script>
//当前组件的业务逻辑
export default {
data() {
return {
msg:'hello App.vue'
}
}
}
</script> <style>
/*css样式*/
body{
background-color: green;
}
</style>
(4)如果不配置,只会将App.vue当做一个普通文件来处理,所以我们需要进行配置
在webpack.config.js文件中配置如下
// webpack ./main.js ./build.js
module.exports = {
// 入口
entry:{
// 可以有多个入口,也可以有一个,如果有一个就默认从这一个入口开始分析
"main":'./src/main.js'
},
output:{
filename:'./src/build.js'
},
watch:true, module:{
loaders:[{
//单文件引入
test: /\.vue$/,
loader: 'vue-loader' }]
}
}
(5)main.js中用下面这种方式不能渲染,会报如下错误
build.js:3520 [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.
(found in <Root>)
import Vue from 'vue'
import App from './App.vue' new Vue({
el:'#app',
components:{
App
}, template:'<App/>'
//render:c=>c(App)
})
render函数是vue2.x版本新增的一个函数;
使用虚拟Dom来渲染节点提升性能,因为他是基于javascript计算的
通过使用createElement(h)来创建dom节点,createElement是render的核心方法
其vue编译的时候会把template里面的节点解析成虚拟dom
import Vue from 'vue'
import App from './App.vue' new Vue({
el:'#app',
/*components:{
App
}, template:'<App/>'*/
render:c=>c(App)
})
三、总结
---恢复内容结束---
Vue(基础七)_webpack打包工具(续)的更多相关文章
- Vue(基础七)_webpack打包工具用法(上)
一.前言 1.webpack原理 二.主要内容 1.webpack原理: (1)官网图:我们的项目有多个js, css文件的时候还需要考虑先引入哪一个后引入哪一个,因为这些js文件是相互依赖的,web ...
- Vue(基础七)_webpack使用工具(下)
一.前言 1.webpack.config文件配置 2.webpack打包css文件 ...
- Vue(基础七)_webpack(CommonsChunkPlug的使用)
---恢复内容开始--- 一.前言 1.多入口文件配置 2.CommonsChunkPlugin的用法 ...
- Vue(基础七)_webpack(webpack异步加载原理)
---恢复内容开始--- 一.前言 1.webpack异步加载原理’ 2.webpack.ensure原理 ...
- Java基础七(Eclipse工具)
今日内容介绍1.Eclipse开发工具2.超市库存管理系统 ###01Eclipse的下载安装 * A: Eclipse的下载安装 * a: 下载 * http://www.eclipse.org ...
- vue基础七
事件处理器 1.监听事件 可以用 v-on 指令监听 DOM 事件来触发一些 JavaScript 代码. <div id="example-1"> <butto ...
- vue 之webpack打包工具的使用
一.什么是webpack? webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个.vue文件中都可能html.js.c ...
- Vue学习【第四篇】:Vue 之webpack打包工具的使用
什么是webpack webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个.vue文件中都可能html.js.css甚 ...
- vue之webpack打包工具的使用
vue之webpack打包工具的使用 一.什么是webpack? webpack是一个模块打包工具.用vue项目来举例:浏览器它是只认识js,不认识vue的.而我们写的代码后缀大多是.vue的,在每个 ...
随机推荐
- tensorflow点滴笔记
1.模型保存 模型保存需要使用函数 tf.train.Saver(), a)创建saver时,可以指定需要存储的tensor,如果没有指定,则全部保存. b) 创建saver时,可以指定保存的模型个数 ...
- 灰度图Matlab
[转载]matlab中pcolor绘图“少画一行”的问题 本文是关于matlab pcolor函数(slice,surf函数的情况与这个类似)绘图的问题的一些解决方案,在此记录备用 经 常处理三维(或 ...
- Nginx 用最快方式让缓存失效
陶辉103 一般让及时缓存失效针对nginx官方是收费的 我们可以用第三方模块 https://github.com/FRiCKLE/ngx_cache_purge proxy_cache_path ...
- 18mysql3
一.内外连接全连接,左右连接 █▓ 通过两张表查找其对应的记录. 隐式 内连接 select * from a,b where a.列名 = b.列名 █▓ 左连接 ...
- C# 动态调用泛型方法
static void Main(string[] args) { #region 具体类型可传递. Personal specifiedPersonal = new Personal(); Empl ...
- 【BZOJ1578】【USACO2009Feb】股票市场 背包DP
题目大意 告诉你\(n\)只股票在这\(m\)天内的价格,给你\(s\)元的初始资金,问你\(m\)天后你最多拥有多少钱. \(n\leq 50,m\leq 10,s\leq 200000,\)答案\ ...
- 解决 phpstorm 运行卡,自动关闭等问题
解决 phpstorm 自动关闭问题: 使用文件搜索工具(可在本博客搜索“管理工具”,或查找安装目录) 找到phpstorm.vmoptions文件,使用记事本打开. 添加以下两行代码: -Dawt. ...
- ssh-keygen适用场景与rsync使用id_rsa技巧
ssh-keygen工具可以实现免密码登录服务器可参考之前的blog:http://www.cnblogs.com/Mrhuangrui/p/4565333.html写的比较粗糙 原理说明使用ssh- ...
- 【JDK源码】将JDK源码导入IDEA中
新建工程 在IDEA中新建普通JAVA工程,步骤如下: 导入源码 首先可以通过如下方法找到工程目录. 在JDK安装目录下找到源码包src.zip,如下图 将src.zip包解压,并将src目录下的内容 ...
- 【BZOJ1299】巧克力棒(博弈论,线性基)
[BZOJ1299]巧克力棒(博弈论,线性基) 题面 BZOJ 题解 \(Nim\)博弈的变形形式. 显然,如果我们不考虑拿巧克力棒出来的话,这就是一个裸的\(Nim\)博弈. 但是现在可以加入巧克力 ...