简介:
定义了一种新的语言,用于进行CSS的编码工作,进行Web界面样式设计,再通过编译器转化成正常的CSS文件,以供项目使用。
常用的CSS预处理器:
优点在于简化了DOM操作,缺点是DOM操作太频繁,影响性能。
特点是将后台的MVC模式搬到了前端并增加了模块化开发的理念,与微软合作,采用TypeScript,对前端程序有不太友好。
Facebook出品,一款高性能的JS前端框架;特点是提出了新概念【虚拟DOM】用于减少真实DOM操作,在内存中虚拟DOM操作,在内存中模拟DOM操作,有效的提升了前端渲染效率;缺点是使用复杂,因为需要额外学习一门【JSX】语言。
一套渐进式JavaScript框架,所谓渐进式就是逐步实现新特性的意思,如实现模块化开发、路由、状态管理等新特性。其特点是综合了Angular(模块化)和React(虚拟DOM)的优点。
前端通信框架,因为Vue的边界很明确,就是为了处理DOM,所以并不具有通信能力,此时就需要额外使用一个通信框架与服务器交互,当然也可以直接选择使用jQuery提供你的AJAX通信功能
NodeJS框架及项目管理工具如下:
常用
一个强大的基于Vue的框架,基础组件比elementui的组件更丰富,主要服务于PC界面的中后台产品。使用单文件的Vue组件化开发模式,基于npm + webpack + babel开发,支持ES6高质量、功能丰富友好的API,自由灵活地使用空间
特点:移动端支持较多
基本涵盖后端所需的所有组件,文档讲解详细,主要用于PC端开发,是质量比较高的Vue UI组件古
特点:桌面端支持多
以React为主,对Vue的支持不太完善
轻量灵活,拓展性强,方便二次开发
Google出品,特点是快速构建原生APP应用程序,如果做混合应用该框架必选
MVVM是一种软件架构设计模式,是一种简化用户界面的实践驱动编程方式。
MVVM源于经典的MVC。MVVM的核心是View Model层,负责转换Model中数据对象来让数据更加容易管理和使用,其作用如下:
MVVM已经相当成熟了,当下流行的MVVM框架由Vue.js,Angularjs等。
MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处:
View是视图层,也就是用户界面。前端主要由HTML和CSS构建,各大MVVM框架如:Vue.js,AngularJS,EJS等都有自己用来构建用户界面的内置模板语言。
Model是指数据模型,泛指后端进行的各种业务逻辑处理和数据操纵,主要围绕数据库系统展开。这里的难点主要在于需要和前端约定统一的接口规则。
ViewModel:
ViewModel是由前端开发人员组织生成和维护的视图数据层。在这一层,前端开发者对从后端获取的Model数据进行转换处理,做二次封装,以生成符合View层使用预期的试图数据模型。
需要注意的是ViewModel所封装出来的数据模型包括视图的状态和行为两部分,而Model层的数据模型是只包含状态的。
双向绑定:ViewModel可以完整去描述View层,View层的内容也会实时展示在ViewModel层中。
View层展现的不是Model层的数据,而是viewModel的数据,由ViewModel负责与Model层交互,这就完全耦合了View层和Model层,这个解耦是至关重要的,它是前后端分离方案实施的重要一环。
在MVVM架构中,是不允许数据和视图直接通信的,只能通过ViewModel来通信,而ViewModel就是定义了一个Observer观察者。
因此Vue.js就是一个MVVM的实现者,他的核心就是实现了DOM监听与数据绑定
//创建一个Vue实例
将数据绑定到页面元素(视图层)
{
{message}}
v-bind可以简写为冒号(:)
A
B
C
主要用于读取数组元素,如items是一个数组元素迭代的别名
{
{item.message}}
用于监听事件,v-on可以简写为@,比如v-on:click可以简写为@click,用法:@click=“函数名(methods)”
与v-bind不同的是,它是双向绑定的,当数据发生变化的时候,视图会发生变化,当视图发生变化的时候,数据也会发生变化。
在用v-model处理表单、之类的元素时,可以实时更新,并且对一些极端场景进行一些特殊处理。
组件就是可服用的Vue实例,有点像自定义标签。
组件之间一般也会存在各种关系。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5HrCx8a9-1633504457821)(C:\Users\86135\AppData\Roaming\Typora\typora-user-images\image-20210929145455844.png)]
说明:
如果需要传递参数到组件的话,就需要使props属性了!
计算属性的重点突出在属性两个字上,计算指的是函数,属性可以理解为缓存
methods和computed的区别
说明:
结论:
调用方法时,每次都需要进行计算,每次都会产生开销,如果这个结果不是经常变化的,就可以考虑缓存起来。计算属性的主要特性就是为了将不经常变化的计算结果进行缓存,以节约系统开销
在Vue中使用元素,作为承载分发内容的出口,作者称其为查早,可以应用在组合组件的场景中;
比如准备制作一个待办事项组件(todo),该组件由代办标题(todo-title)和代办内容(todo-items)组成,但这三个组件又是相互独立的。
第一步:定义一个待办事项的组件,留出插槽slot
第二步:定义一个名为todo-title的待办标题组件和todo-items的待办内容组件
Vue.component('todo-title',{
props:['title'],
template:'
{
{title}}
'
});
Vue.component('todo-items',{
props:['item','index'],
template:'
{
{index + 1}}.{
{item}}
'
});
第三步:实例化Vue并初始化数据
new Vue({
el : '#APP',
data:{
todoItems:['A','B','C']
}
})
第四步:将这些值通过插槽插入
数据项在Vue的实例中,但删除操作要在组件中完成。为了删除操作更好进行,涉及到参数传递和事件分发,Vue为我们提供了自定义事件的功能很好地帮助我们解决了这个问题;使用this.$emit(‘自定义事件名’,参数)
new vue({
el:'#app', deta{
todoItems:['A','B','C'] }, methods:{
//该方法可以被模板中自定义事件出发 removeTodoItems:function(index){ this.todoItems.splice(index,1); } }})
Axios是一个开源的,可以在浏览器端和NodeJS的异步通信框架,她的主要作用就是实现AJAX异步通信,其功能特点如下:
由于Vue.JS是一个视图层框架,并且坐着严格遵守关注度分离原则,所以Vue.js并不包含AJAX的通信功能,为了解决通信问题,作者单独开发了名为vue-resource的插件,不过在进入2.0版本以后停止了对该插件的维护并推荐了Axios框架。少用jQuery,因为DOM操作太频繁!
创建一个JSON文件,放在项目的根目录下
测试代码
title 名称:{
{info.name}} 地址:{
{info.address.country}}-{
{info.address.city}}- {
{info.address.street}}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbS1wJ1q-1633504457824)(C:\Users\86135\Desktop\files\vue\资料(含课件)\02_原理图\生命周期.png)]
Vue.js路由允许我们通过不同的URL访问不同的内容通过Vue.js可以实现多视图的单页Web应用
创建router文件夹
npm下载资源
npm install vuenpm install vue-router
新建一个lib目录,将资源复制出来
创建一个路由.html
引入vue-router.min.js
编写html
Hello APP
首页 会员管理
编写js
脚手架
主要的功能:
cnpm install vue-cli -gvue list
新建一个文件夹vue-cli
创建一个基于webpack模板的vue应用程序
vue init webpack myvue
说明:
npm installnpm run dev
执行完成后,目录多了很多依赖
源码目录
项目的入口文件
import Vue from 'vue' //ES6写法,会被转换成require("vue")import APP from 'APP' //意思同上,但是制定了查找路径,./为当前目录Vue.config.productionTip = false //关闭浏览器控制台关于环境的相关提示new Vue({ //实例化vue el:'#app' //查找index.html中id为app的元素 components:{APP} //引入组件 template:'APP/' //模板});
路径中带#符号,如:http://localhost/#/login
路径中不带#符号,如:http://localhost/login
需要修改路由配置,代码如下:
export default new Router({
mode:'history', routes: ]});
处理404创建一个名为NotFound.vue的视图组件,代码如下:
页面不存在,请重试!
修改路由配置,代码如下:
import NotFound from '../components/NotFound'{
path:'*', component:NotFound}
创建文件夹element-ui
npm安装依赖
npm install vuenpm i element-ui -s
新建一个lib目录,导入库
创建ui.html,引入js和css文件
<link rel="stylesheet" href="./lib/element-ui/lib/theme-chalk/index.css"> <script src="./lib/vue.min.js">script> <script src="./lib/element-ui/lib/index.js">script>
编写页面
编写js
运行测试效果