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的,在每个 ...
随机推荐
- 天虎云商wap和微信话项目总结
1:架构:以后要采用项目分模块的方式写代码了,不能写一个公用的controller包,每个模块分包,分别建立service,dao,但是模块同级的有个功能的baseDao, BaseSe ...
- Spring Boot 构建电商基础秒杀项目 (九) 商品列表 & 详情
SpringBoot构建电商基础秒杀项目 学习笔记 ItemDOMapper.xml 添加 <select id="listItem" resultMap="Bas ...
- Windows & RabbitMQ:集群(clustering) & 高可用(HA)
描述:我们需要配置三台服务器:ServerA, ServerB, ServerC 注意事项: 所有的服务器的Erlang版本,RabbitMQ版本必须一样 服务器名大小写敏感 Step 1:安装Rab ...
- Jetson TX1 install py-faster-rcnn
Install py-faster-rcnn following the official version https://github.com/rbgirshick/py-faster-rcnn ...
- Stack Pointer Tracker
在Intel 64与IA-32架构中,存在一类用于跳转到以及跳出程序段的指令:PUSH.POP.CALL.LEAVE与RET.这些指令可以在没有其余指令的干预下隐式地更新栈寄存器(ESP),维护栈内的 ...
- Nginx lingering_close延迟关闭
L:130
- linux shell系列9 统计用户的权限
#!/bin/bash #set -x host=`hostname` ip=`ifconfig $(ip a|grep eth|head -n1|awk -F: '{print $2}') |gre ...
- MT【284】构造函数的导数的两类题型
第一类: 已知定义在$R$上的奇函数$f(x),f(-1)=0,$当$x>0$时,$xf^{'}(x)-f(x)<0,$则$f(x)>0$的解集为____ 第二类: 已知函数$f(x ...
- 【Luogu3602】Koishi Loves Segments(贪心)
[Luogu3602]Koishi Loves Segments(贪心) 题面 洛谷 题解 离散区间之后把所有的线段挂在左端点上,从左往右扫一遍. 对于当前点的限制如果不满足显然会删掉右端点最靠右的那 ...
- ELK部署详解--elasticsearch
#Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编 ...