Vue与webpack入门

vue.js介绍

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。
自底向上逐层应用: 作为渐进式框架要实现的目标就是方便项目增量开发

vue.js有哪些功能

1、声明式渲染

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。
比如:使用vue.js的插值表达式放在Dom的任意地方, 差值表达式的值将被渲染在Dom中。

2、条件与循环

dom中可以使用vue.js提供的v-if、v-for等标签,方便对数据进行判断、循环。

3、双向数据绑定

Vue 提供v-model 指令,它可以轻松实现Dom元素和数据对象之间双向绑定,即修改Dom元素中的值自动修改绑
定的数据对象,修改数据对象的值自动修改Dom元素中的值。

4、处理用户输入

为了让用户和你的应用进行交互,我们可以用 v-on 指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法

5、组件化应用构建

vue.js可以定义一个一个的组件,在vue页面中引用组件,这个功能非常适合构建大型应用。

MVVM模式

vue.js是一个MVVM的框架,理解MVVM有利于学习vue.js。
MVVM拆分解释为:

  • Model:负责数据存储
  • View:负责页面展示
  • View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示

MVVM要解决的问题是将业务逻辑代码与视图代码进行完全分离,使各自的职责更加清晰,后期代码维护更加简单

Vue中的 MVVM

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF‐8">
<title>vue</title>
<script src="/js/vue/vue.min.js"></script>
</head>
<body>
	<div id="app">
	<!‐‐ 在Vue接管区域中使用Vue的系统指令呈现数据
	这些指令就相当于是MVVM中的View这个角色 ‐‐>
	<a v‐bind:href="url"><span v‐text="name"></span></a>
	<input type="text" v‐model="num1">+
	<input type="text" v‐model="num2">=
	<span v‐text="result"></span>
	<button v‐on:click="count">计算</button>
</body>
<script>
	//实例化Vue对象
	//vm :叫做MVVM中的 View Model
	var VM = new Vue({
		el:"#app",//表示当前vue对象接管id为app的div区域
		data:{
				name:'百度',// 相当于是MVVM中的Model这个角色
				num1:0,
				num2:0,
				result:0,
				url:'www.baidu.com'
			 },
		methods:{
			count:function(){
				this.result = Number.parseInt(this.num1)+Number.parseInt(this.num2)
			}
		}
	});
</script>
</html>

1、v-model

在表单控件或者组件上创建双向绑定
v-model仅能在如下元素中使用:
input
select
textarea
components(Vue中的组件)
解决插值表达式闪烁问题,使用v-text
v-text可以将一个变量的值渲染到指定的元素中,它可以解决插值表达式闪烁的问题

3、v-on

绑定一个按钮的单击事件

4、v-bind

作用:
v‐bind可以将数据对象绑定在dom的任意属性中。
v‐bind可以给dom对象绑定一个或多个特性,例如动态绑定style和class
举例:
<img v‐bind:src=“imageSrc”> <div v‐bind:style="{ fontSize: size + ‘px’ }"></ div>
缩写形式
< img :src=“imageSrc”>
< div :style="{ fontSize: size + ‘px’ }"></ div>

v-if和v-for
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF‐8">
<title>Document</title>
<script src="/js/vue/vue.min.js"></script>
</head>
<body>
	<div id="app">
	<ul>
	<!‐‐只显示偶数行‐‐>
	<li v‐for="(item,index) in list" :key="index" v‐if="index % 2==0">{{index}}{{item}}
	</li>
	<li v‐for ="(value,key) in user">{{key}}{{value}}</li>
	<li v‐for="(item,index) in userlist" :key="item.user.uname">
	{{index}}{{item.user.uname}}{{item.user.age}}
	</div>
	<div v‐else="">
	{{index}}{{item.user.uname}}{{item.user.age}}
	</div>
	</li>
	</ul>
	</div>
</body>
<script>
	new Vue({
		el:'#app',
		data:{
			list:[1,2,3,4,5],
			user:{uname:'zhangs',age:20},
				userlist:[
					{ user:{uname:'lisi',age:21}},
					{ user:{uname:'wangw',age:22}}
				]
		}
	});
</script>
</html>

webpack介绍

Webpack 是一个前端资源的打包工具,它可以将js、image、css等资源当成一个模块进行打包。在这里插入图片描述
优点:
1、模块化开发

程序员在开发时可以分模块创建不同的js、 css等小文件方便开发,最后使用webpack将这些小文件打包成一个文件,减少了http的请求次数。webpack可以实现按需打包,为了避免出现打包文件过大可以打包成多个文件。

2、 编译typescript、ES6等高级js语法

随着前端技术的强大,开发中可以使用javascript的很多高级版本,比如:typescript、ES6等,方便开发,webpack可以将打包文件转换成浏览器可识别的js语法。

3、CSS预编译

webpack允许在开发中使用Sass 和 Less等原生CSS的扩展技术,通过sass-loader、less-loader将Sass 和 Less的语法编译成浏览器可识别的css语法。

缺点:

1、配置有些繁琐
2、文档不丰富

webpack基于node.js运行,首先需要安装node.js。
node.js官网下载地址

步骤:

  1. 安装完成检查PATH环境变量是否设置了node.js的路径。
node ‐v 			//测试 会显示当前node的版本
  1. 自动安装NPM

npm全称Node Package Manager,他是node包管理和分发的工具,使用NPM可以对应用的依赖进行管理,NPM的功能和服务端项目构建工具maven差不多,我们通过npm 可以很方便地下载js库,打包js文件。
node.js已经集成了npm工具,在命令提示符输入 npm -v 可查看当前npm版本

  1. 设置包路径

包路径就是npm从远程下载的js包所存放的路径。
使用 npm config ls 查询NPM管理包路径(NPM下载的依赖包所存放的路径)
可以通过下面的命令更改路径
npm config set prefix “d:\xxx\xxx\nodejs\npm_modules”
npm config set cache “d:\xxx\xxx\nodejs\npm_cache”

  1. 安装cnpm

npm默认会去国外的镜像去下载js包,在开发中通常我们使用国内镜像,这里我们使用淘宝镜像下边我们来安装cnpm:
输入命令,进行全局安装淘宝镜像。
npm install -g cnpm --registry=https://registry.npm.taobao.org
安装后,我们可以使用以下命令来查看cnpm的版本
cnpm -v

  1. 安装webpack

npm install webpack -g 或 cnpm install webpack -g
安装固定版本的
npm install webpack@3.6.0 -g或 cnpm install webpack@3.6.0 -g

入门测试

1、定义model01.js
在webpacktest目录下创建model01.js
将本程序使用的加法运算的js方法抽取到一个js文件,此文件就是一个模块

// 定义add函数
function add(x, y) {
return x + y
}
// function add2(x, y) {
// return x + y+1
// }
// 导出add方法
module.exports.add = add;
// module.exports ={add,add2};//如果有多个方法这样导出
// module.exports.add2 = add2//如果有多个方法也可以这样导出

2、定义main.js
在webpacktest目录下创建main.js,main.js是本程序的js主文件,包括如下内容:

  • 在此文件中会引用model01.js模块
  • 引用vue.min.js(它也是一个模块)
  • 将html页面中构建vue实例的代码放在main.js中。

main.js的代码如下

	var {add} = require('./model01.js');
	var Vue = require('./vue.min');
	var VM = new Vue({
		el:"#app",//表示当前vue对象接管app的div区域
		data:{
			name:'百度',// 相当于是MVVM中的Model这个角色
			num1:0,
			num2:0,
			result:0,
			url:'www.baidu.com'
		},
		methods:{
			change:function(){
			//这里使用了导入的model01.js文件中的add方法
			this.result = add(Number.parseInt(this.num1),Number.parseInt(this.num2))
		}
	}
});

3、打包测试
上边将mode01.js模块及main.js主文件编写完成,下边使用webpack对这些js文件进行打包

  • 进入程序目录,执行webpack main.js build.js ,这段指令表示将main.js打包输出为build.js文件,执行完成,观察程序目录是否出现build.js。
  • 在html中引用build.js
<!DOCTYPE html>
<html lang="en" xmlns:v‐on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF‐8">
<title>vue</title>
</head>
<body>
	<div id="app">
	<!‐‐{{name}}解决闪烁问题使用v‐text‐‐>
	<a v‐bind:href="url"><span v‐text="name"></span></a>
	<input type="text" v‐model="num1">+
	<input type="text" v‐model="num2">=
	<span v‐text="result"></span>
	<!‐‐{{num1+num2}}‐‐>
	<!‐‐<input type="text" v‐model="result">‐‐>
	<button v‐on:click="count">计算</button>
	<!‐‐ 在Vue接管区域中使用Vue的系统指令呈现数据
	这些指令就相当于是MVVM中的View这个角色 ‐‐>
	</div>
</body>
<script src="build.js"></script>
</html>
//可以实现之前的计算功能
webpack-dev-server

webpack-dev-server开发服务器,它的功能可以实现热加载并且自动刷新浏览器。
1、安装webpack-dev-server
使用 webpack-dev-server需要安装webpack、 webpack-dev-server和 html-webpack-plugin三个包。
要找好对应的版本
cnpm install webpack@3.6.0 webpack-dev-server@2.9.1 html-webpack-plugin@2.30.1 --save-dev
安装完成,会发现程序目录出现一个package.json文件,此文件中记录了程序的依赖。
2、配置webpack-dev-server

{
"scripts": {//scripts:可执行的命令
	"dev": "webpack‐dev‐server ‐‐inline ‐‐hot ‐‐open ‐‐port 5008"
	},
	"devDependencies": {//devDependencies:开发过程中所需要的依赖。
		"html‐webpack‐plugin": "^2.30.1",
		"webpack": "^3.6.0",
		"webpack‐dev‐server": "^2.9.1"
	}
}
//inline:自动刷新
//hot:热加载
//port:指定端口
//open:自动在默认浏览器打开
//host:可以指定服务器的 ip,不指定则为127.0.0.1,如果对外发布则填写公网ip地址
debug调试

1、在webpack.config.js中配置:
devtool: ‘eval‐source‐map’,

var htmlwp = require('html‐webpack‐plugin');
module.exports={
	entry:'./src/main.js', //指定打包的入口文件
	output:{
		path : __dirname+'/dist', // 注意:__dirname表示webpack.config.js所在目录的绝对路径
		filename:'build.js' //输出文件
	},
devtool: 'eval‐source‐map',
......

2、在js中跟踪代码的位置上添加debugger

// 定义add函数
function add(x, y) {
	debugger
	return x + y
}
//启动应用,刷新页面跟踪代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值