1.Vue简介

一、Vue.js简介

Vue.js是什么?

Vue.js是UI层的渐进式框架,和Vue.js齐名的,还有:

  1. React
  2. Angular

Vue.js框架的优势:

  1. 提高代码复用率
  2. 降低模块之间耦合度
  3. 提高开发速度
  4. 提高代码质量

为什么使用Vue.js?

  1. 受到Angular框架的启发。
  2. 比Angular框架简单很多
  3. 有中文的文档,社区活跃度高。
  4. 性能高
  5. 基于组件(web component) 开发

二、MV-模型

MV*模型
因为 SPA(singlepageapplication) 所以需要新的交互模式。
在这里插入图片描述

MVC模式:
Module: 用于存放数据
View: 用于更新DOM
Controller:调用Module给View渲染使用

MVP模式:
Module:用于存放数据
View: 响应用户交互行为
Presenter:

  1. Module改变,修改DOM
  2. View响应用户交互时,通知Presenter,Presenter负责更新Module,以及修改DOM

MVVM模式:
Module:用于存放数据
View:响应用户交互行为
ViewModel:可以理解为自动化调用的Presenter

三、Vue.js开发环境搭建

  1. 直接使用:https://cn.vuejs.org/v2/guide/installation.html
    在这里插入图片描述
  2. 安装Vue
    ①安装node.js和git
    ②安装bower
    使用管理员身份的命令行,输入命令:
npm install bower -g 

用bower -v检查是否安装成功

npm install -g cnpm --registry=https://registry.npm.taobao.org

③安装Vue

bower info vue

此命令用来查看Vue版本

bower install vue <#版本> 

选择需要的版本进行安装

四、helloword实验

实现最简单的页面输出HelloWorld!
添加click事件,改变model,查看View的变化

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
	<!-- 引入vue.js -->	
	<script src="js/vue.js"></script>	
	
	
	</head>
	<body>
		
		<div id = "app">
			<h3>{{word}}</h3>
			<input type="button" value="按钮1" v-on:click="show()" />
			<input type="button" value="按钮2" @click="show()" />
		</div>
		<!-- 1.简写用@来代替v-on
		2.函数不传递参数时,可以省略括号-->
	<script>
	    //由于Dom加载机制,此部分内容要放在body后部
		//Module
		var m = {
			word: 'hello word!',
		};
		
		//ViewModule
		var vm = new Vue({
			el:'#app',//挂载点
			data:m,    //数据
			//方法
			methods:{
				show(){
					console.log('hello,world');
					this.word = 'hi,world';
				}
			}
		});
		
	</script>
	</body>
</html>

Vue的MVVM实现:

  • 当Vue示例创建后,形成双向绑定: DOM .Listeners,Data bindings
  • 从View侧看,DOM Listeners监听DOM的变化
  • 从Mode|侧看,Data bindings帮助更新View,也就是DOM
    在这里插入图片描述

动态添加一个div,包含p标签和文字

  1. 直接操作dom
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
	<!-- 引入vue.js -->	
	<script src="js/vue.js"></script>	
	
	
	</head>
	<body>
		
		<div id = "app">
			<input type="button" value="按钮" />
		</div>

	<script type="text/javascript">
		/* 直接操作dom */
		function changeDirectly(){
			var app = document.getElementById('app');
			var div,p;
			div = document.createElement('div');
			p = document.createElement('p');
			p.innerHTML = 'helloworld';
			div.appendChild(p);
			app.appendChild(div);
		}
		addEventListener('click',changeDirectly)
	</script>
	</body>
</html>

  1. 模板方法
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
	<!-- 引入vue.js -->	
	<script src="js/vue.js"></script>	
	
	
	</head>
	<body>
		
		<div id = "app">
			<input type="button" value="按钮" />
		</div>

	<script type="text/javascript">
		//模板方法
		function changeDirectly(){
			var app = document.getElementById('app');
			var html ='';
			htmlTmp = '<div><p>%word%</p></div>';
			html = htmlTmp.replace(/%word%/g,'helloword');
			console.log(html);
			app.innerHTML = html;
			 
		}
		addEventListener('click',changeDirectly);	
	</script>
	</body>
</html>

  1. js与html分离
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
	<!-- 引入vue.js -->	
	<script src="js/vue.js"></script>	
	
	
	</head>
	<body>
		
		<div id = "app">
			<input type="button" value="按钮" />
		</div>
		
		<script id="temp" type="text/temp">
			<div>
			   <p>%word%</p>
			</div>
		</script>

	<script type="text/javascript">
	// JS与HTML分离
    //第一步:把模板放到HTML中
    //第二步:渲染
    //第三步:模板hide起来

		function changeDirectly(){
			var app = document.getElementById('app');
			var html ='';
			htmlTmp = document.getElementById('temp').innerHTML;
			html = htmlTmp.replace(/%word%/g,'helloword');
			console.log(html);
			app.innerHTML = html;
			 
		}
		addEventListener('click',changeDirectly);
	</script>
	</body>
</html>

所有原来的方法,无论是原生JS,或者是jQuery, 都把HTML的定义放
在了JS代码中,这种方法违反了JS与HTML相分离的原则,大大降低了
代码的可维护性。

<think>嗯,用户想了解Vue.js的基本概念和功能,以及入门指南。我需要先回顾一下他们之前提到的MyBatis-Plus的回答结构,确保格式符合要求,比如使用中文,正确应用LaTeX,生成相关问题等。用户提供的引用是关于Vue.js的两个指南,但用户明确说明这些只是参考,需要主要依据他们之前的对话。 首先,用户之前的问题是关于MyBatis-Plus,我的回答结构包括了简介、主要功能、使用场景、示例代码和相关问题。现在需要为Vue.js构建类似的回答结构。用户可能期望一个结构清晰、分点明确的介绍,涵盖Vue.js的核心概念、基本功能、使用方法和示例代码,以及相关的问题。 接下来,我需要确认用户的需求是入门级别的,所以应该从基础开始,比如Vue实例、响应式数据、指令、组件等。同时要避免过于深入的高级话题,保持内容的简洁易懂。另外,用户提到使用中文回答,所以需要确保语言流畅,技术术语准确。 然后,考虑到用户可能已经看过引用中的内容,我需要避免重复,而是结合用户之前的兴趣点(比如MyBatis-Plus的代码示例、功能列表)来组织Vue.js的内容。例如,提供代码示例,展示Vue.js的基本用法,如创建实例、数据绑定、指令使用等。 还需要注意引用标识,但用户提供的引用[1]和[2]是关于Vue.js的,但用户指出这些只是站内引用,可能需要根据之前的回答添加正确的引用。不过根据用户指示,之前的回答中的引用可能不相关,所以可能需要忽略或调整引用来源。 另外,用户要求生成相关问题,我需要根据Vue.js的内容提出几个常见的问题,比如生命周期、组件通信、Vue CLI等,确保问题与内容相关,并且能引导用户进一步学习。 最后,检查LaTeX格式是否正确,行内公式用$...$,独立公式用$$...$$,但Vue.js的内容可能较少涉及数学公式,所以可能需要确认是否有必要使用,比如在讲解计算属性或响应式原理时,但可能不需要,因此可以忽略,或者仅在必要时使用。 总结步骤:简介、核心概念、基本功能、示例代码、常见应用场景、相关问题。确保每个部分清晰,使用代码块和列表,符合用户之前的回答风格。同时验证所有技术细节的准确性,比如Vue实例的创建、指令的用法等,避免错误信息。</think>### Vue.js 简介 Vue.js 是一套用于构建用户界面的**渐进式 JavaScript 框架**,其核心设计目标是简化前端开发流程。Vue.js 通过**响应式数据绑定**和**组件化开发**,使得开发者能够高效地创建交互式 Web 应用[^1]。以下是其核心概念与功能的详细介绍: --- ### 核心概念 #### 1. **响应式数据绑定** Vue.js 通过 `data` 属性实现数据的响应式更新。当数据变化时,视图会自动同步更新,无需手动操作 DOM。 ```javascript var app = new Vue({ el: '#app', data: { message: 'Hello, Vue!' // 数据变化时,页面自动刷新 } }); ``` #### 2. **指令系统** Vue.js 提供了一系列内置指令(如 `v-bind`, `v-model`, `v-for`, `v-if`),用于简化 DOM 操作。 - `v-bind`: 动态绑定 HTML 属性 ```html <div v-bind:class="dynamicClass"></div> ``` - `v-model`: 实现表单输入与数据的双向绑定 ```html <input v-model="message"> <!-- 输入框内容与 data.message 同步 --> ``` #### 3. **组件化开发** Vue.js 允许将界面拆分为独立的可复用组件,每个组件包含自己的逻辑、模板和样式。 ```javascript Vue.component('todo-item', { props: ['todo'], template: '<li>{{ todo.text }}</li>' }); ``` #### 4. **生命周期钩子** Vue 实例从创建到销毁会经历一系列生命周期阶段(如 `created`, `mounted`, `updated`),开发者可在特定阶段插入自定义逻辑。 ```javascript new Vue({ created() { console.log('实例已创建,但尚未挂载到 DOM'); }, mounted() { console.log('实例已挂载到 DOM'); } }); ``` --- ### 核心功能 #### 1. **单文件组件(SFC)** Vue.js 支持以 `.vue` 文件形式组织代码,将模板、逻辑和样式封装在单一文件中,提升可维护性。 ```vue <template> <div>{{ message }}</div> </template> <script> export default { data() { return { message: 'Hello from SFC!' }; } }; </script> <style scoped> div { color: blue; } </style> ``` #### 2. **Vue Router** 官方路由库,支持构建单页面应用(SPA),实现页面无刷新跳转。 ```javascript const routes = [ { path: '/home', component: Home }, { path: '/about', component: About } ]; const router = new VueRouter({ routes }); ``` #### 3. **Vuex 状态管理** 用于集中管理应用中的共享状态,解决组件间复杂的数据传递问题。 ```javascript const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++; } } }); ``` --- ### 快速入门步骤 1. **引入 Vue.js** 通过 CDN 或 npm 安装: ```html <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script> ``` 2. **创建 Vue 实例** ```javascript new Vue({ el: '#app', data: { message: 'Hello, Vue!' } }); ``` 3. **绑定数据到视图** ```html <div id="app"> <p>{{ message }}</p> <input v-model="message"> </div> ``` --- ### 应用场景 - **动态表单**:利用 `v-model` 快速实现表单数据双向绑定。 - **数据可视化**:结合响应式数据更新图表或列表。 - **企业级后台系统**:通过组件化拆分复杂界面,提升代码复用率[^2]。 --- ### 常见问题 #### 1. **Vue.js 与 React/Angular 有何区别?** Vue.js 更轻量且学习曲线平缓,适合中小型项目;React 强调函数式编程,生态更庞大;Angular 适合企业级应用但复杂度较高。 #### 2. **如何调试 Vue 应用?** 安装浏览器插件 [Vue Devtools](https://github.com/vuejs/vue-devtools),可直观查看组件层级、状态和事件。 #### 3. **Vue 3 的主要改进是什么?** 引入 Composition API、性能优化(如 Proxy 替代 `Object.defineProperty`)、更好的 TypeScript 支持等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值