当前位置: 首页 > news >正文

[ vue 前端框架 ] 基本用法和vue.cli脚手架搭建

目录

 

一. vue概述(vue.js)

   1. 定义:

   2. 特点:

二. vue指令

(1) v-text 和 v-html

(2) v-on 和 v-model

(3) v-show 和 v-if

(4) v-bind 

(5) v-for

(6) 声明周期函数

三. vue.cli

      1. 概述

      2. 创建前端单页结构项目

      (1) 安装前端环境 node.js

      (2) 使用 HbuilderX 快速搭建一个 vue-cli 项目

      (3) 基本指令

 3. 组件路由

(1) 安装

(2) 在index.js配置路由

(3)在main.js中配置路由

(4)在App.vue中配置

(5)更换npm 镜像地址 

4. 新建项目步骤

 四. ElementUI

(1)安装ElementUI

(2)在main.js中导入elementui组件

(3)views 


一. vue概述(vue.js)

   1. 定义:

       vue是一个前端javascript框架,对javascript进行封装.
       vue.js和 Angular.js、React.js 一起,并成为前端三大主流框架

   2. 特点:

     1.体积小(封装的文件小)
     2.运行效率高,不直接对网页上的标签进行操作,而是基于dom技术进行优化
     3.实现数据双向绑定,程序员只关心要操作的数据即可, 把数据渲染到标签上交给vue框架处理.
     4.生态丰富、学习成本低

二. vue指令

指令带有前缀 v- 开头,以表示它们是 Vue 提供的特殊属性。

(1) v-text 和 v-html

 {{message}} 不会覆盖标签体中的内容,只是在标签内部插入一个值
 v-html 和 v-text 会用数据覆盖标签体中的内容
 区别: v-html  能解析字符串中的标签
          v-text   不能解析字符串中的标签

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title></head><!-- 导入vue.js库 --><script src="js/vue@2.js"></script><body><!-- v-是vue提供的特殊指令 {{message}} 不会覆盖标签体中的内容,只是在标签内部插入一个值v-html和v-text 会用数据覆盖标签体中的内容v-html  能解析字符串中的标签v-text  不能解析字符串中的标签--><div id="app"><div>  <!-- 大的div 属于整体  只要属于大的div中的数据都可以显示-->{{message}},{{a}}<p>  </p></div><div v-html="message1"></div><div v-text="message1"></div></div><!-- 先加载网页里面的内容,在执行js --><script type="text/javascript">/* 创建一个不饿对象,把网页上指定id的标签与vue 对象进行绑定data中定义使用分数据    键:值 {{变量}},插值表达式,获取到data中的定义数据*/let b ="abc";let app= new Vue({el:"#app",// 与<div id="app"> dom 相对应data:{a:"abc",message:"hello vue",message1:"<b>hello vue</b>"}});</script></body>
</html>

(2) v-on 和 v-model

 v-model可以将 输入标签中的值value (双向)绑定 到指定的属性上

 v-on用于监听各种事件 

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title></head><!-- 导入vue.js库 --><script src="js/vue@2.js"></script><body><div id="app"><!-- v-on用于监听各种事件 --><input type="button" value="按钮1" v-on:click="test1(3)"/><!-- 传参3 --><input type="button" value="按钮2" @click="test2()"/><!-- 与上述写法表示相同 使用更多--><hr /><!-- v-model可以将 输入标签中的值value (双向)绑定 到指定的属性上 --><p>{{name}}</p><input type="text" value="" v-model="name" /><input type="button" value="测试" @click="test3()" /></div><script type="text/javascript">let app= new Vue({el:"#app",data:{//定义数据message:"hello vue",name:""},methods:{//定义函数test1(a){alert(1);alert(a);//传参},test2(){alert(this.message); // this表示vue对象 },test3(){this.name="jim";}}});</script></body>
</html>

(3) v-show 和 v-if

v-show="布尔值" 根据布尔值显示或者隐藏当前标签 , 里面可以直接写是否展示, 也可以写条件,通过条件判断是否展示 . 通过 display的值 控制标签 显示或隐藏,每次不需要重新创建标签 效率高

v-if="布尔值" 根据布尔值显示或隐藏当前标签 但是每次从网页中需要 删除/创建 标签,数量多了效率低. v-if和v-else标签必须挨着

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title></head><!-- 导入vue.js库 --><script src="js/vue@2.js"></script><body><div id="app"><!-- v-show="布尔值" 根据布尔值显示或者隐藏当前标签 通过 display的值 控制标签 显示或隐藏,每次不需要重新创建标签 效率高--><div v-show="isshow">123</div><div v-show="a>5">456</div><!--  v-if="布尔值" 根据布尔值显示或隐藏当前标签 每次从网页中要 删除/创建 标签,数量多了效率低v-if和v-else标签必须挨着--><div v-if="isshow">789</div><div v-if="a>5">8910</div><div v-else>8910</div></div><script type="text/javascript">let app= new Vue({el:"#app",data:{isshow:true,a:3},});</script></body>
</html>
<!--  -->

(4) v-bind 

  v-bind是将元素的属性绑定到vue实例的数据和表达式中,会根据元素的值动态更新

可以省略v-bind 只保留:      通过isActive控制是否为标签添加指定的类名 

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title></head><!-- 导入vue.js库 --><script src="js/vue@2.js"></script><style>/* 定义样式 */.active{color:red;}</style><body><div id="app"><!-- v-bind是将元素的属性绑定到vue实例的数据和表达式中,会根据元素的值动态更新 --><!-- <img v-bind:src="imgsrc" v-bind:title="title"/>  下面是方法的简写 省略v-bind 只保留:--><img :src="imgsrc" :title="title"/><input type="button"  value="下一张" @click="next()"/><div v-bind:class="{active:isActive}">状态</div></div><script type="text/javascript">let app= new Vue({el:"#app",data:{imgsrc:	"img/1.png",title:"这是第一张图片",isActive:true},methods:{next(){this.imgsrc="img/2.png";this.title="这是第二张图片";}}});</script></body>
</html>

(5) v-for

     v-for常用于遍历数组和渲染列表

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title></head><!-- 导入vue.js库 --><script src="js/vue@2.js"></script><body><div  id="app"><ul><!-- v-for常用于遍历数组和渲染列表 --><li v-for="(p,index) in provinces">{{index+1}},{{p}}</li></ul><table border="1"><tr><td>学号</td><td>姓名</td><td>性别</td></tr><tr v-for="(student,index) in students"><td>{{index+1}}</td><td>{{student.id}}</td><td>{{student.name}}</td><td>{{student.gender}}</td></tr></table></div><script type="text/javascript">let app = new Vue({el:"#app",data:{//模拟从服务器后端响应回来的数据,在前端把后端响应的数据动态显示在网页上provinces:['北京','天津','上海','重庆','陕西'],students:[{id:1,name:'jim',gender:'男'},{id:2,name:'tom',gender:'男'},{id:3,name:'lili',gender:'女'},{id:4,name:'lili',gender:'女'},{id:5,name:'lili',gender:'女'}]}});</script>	</body>
</html>

(6) 声明周期函数

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><div id ="app"></div><script type="text/javascript">let app= new Vue({el:"#app",data:{//定义数据},methods:{//自定义函数},//vue对象生命周期钩子函数,例如下面四个beforeCreate(){},created(){},beforeMount(){},mounted(){//最常用//这个是vue对象与标签 绑定成功后 执行, 这是我们后面需要的//在网页打开后, 自动执行某些操作,例如自动项后端发送请求加载数据}})</script></body>
</html>

三. vue.cli

      1. 概述

           vue.cli 是vue脚手架

传统的项目结构.每个页面就是一个独立的html文件,如果页面中需要依赖js/css文件, 那么我们就需要在每个html文件中导入所需的依赖的,这就很麻烦.
现在前开发都采用单页结构,一个项目中只有一个html文件 其他不同的内容,都写在.vue文件中,每个vue文件就是一个组件,为每个组件配置一个访问的地址,通过地址访问组件,  这样就可以在仅有的html文件中切换不同的组件. (优点: 配置只需要配置一次,依赖也只需要导入一次)

      2. 创建前端单页结构项目

      (1) 安装前端环境 node.js

         介绍: node.js是一个构建前端的运行环境,类似后端开发的jdk
         npm   node package manager 是javaScript库/包管理 , 使用npm命令将依赖下载到项目中.

         在cmd中 输入node -v 检查node版本 (win+R打开cmd)

         在cmd中输入 npm -v 检查npm版本

      (2) 使用 HbuilderX 快速搭建一个 vue-cli 项目

   需要一些前端环境, node.js(相当于后端的jdk)

 步骤:文件-->新建-->项目-->vue项目(2.6.10)

(新建的项目包含如图几个文件)

(3) 基本指令

 

在命令行窗口输入

下载相关依赖 (一般从网上下载的文件就没有node _modules,需要执行该语句)

npm install

启动项目

npm run serve

启动成功后,会出现访问项目地址: http://127.0.0.1:8080/

停止服务

ctrl+c 出现yes/no后输入y/n

注意: 1. 一般我们删除 package-lock.json 文件    建立 router views两个目录

         2. 可以通过上下键 执行之前执行过的命令

 3. 组件路由

     vue router 是 Vue.js 官方的路由管理器

 (1) 安装

 vue-router 是一个插件包,需要打开命令行工具,进入你的项目目录,用 npm 来进行安装, 输入

npm i vue-router@3.5.3

(2) 在index.js配置路由

    创建router包,并在该包下创建index.js文件,在其中配置路由

import Vue from 'vue';/* 导入vue */
import router from 'vue-router'; /* 导入路由 *//* 导入我们自己创建的组件 */
import Login from "../views/Login.vue"; //可以不需要文件后缀名
import Main from "../views/Main";Vue.use(router);let rout = new router({routes: [{//默认什么地址都不给的时候,自动访问指定组件path: '/',//什么都不写component:Login},{path: '/login',//地址名小写component:Login // },{path:'/main',component:Main}]
});//导出路由对象
export default rout;
(3)在main.js中配置路由
import Vue from 'vue'//导入vue.js
import App from './App.vue'//导入默认组件//导入路由组件
import router from './router/index.js'/* 当前文件夹下的router下的index.js文件 */
Vue.use(router);Vue.config.productionTip = false/* 创建一个唯一的vue对象 */
new Vue({render: h => h(App),//项目启动时,默认访问APP.vue组件router,
}).$mount('#app');//el:#app"
(4)在App.vue中配置
 <template><div id="app"><!-- 显示组件内容 , 相当于画布--><router-view></router-view></div>
</template><script>export default {name: 'app',
}
</script><style></style>
(5)更换npm 镜像地址 

原因:  不同的镜像源地址下载速度不一样, 改变镜像源地址可以加快下载速度

win+R 输入cmd 

查看当前的镜像源

npm config get registry

相关镜像源地址:   国内npm源镜像(npm加速下载) 指定npm镜像_npm国内镜像源-CSDN博客

推荐华为云 npm config set registry https://mirrors.huaweicloud.com/repository/npm/ 

4. 新建项目步骤

删除component 

删除package-lock.json 

       也可以直接禁止生成package-lock.json

npm config set package-lock false --global

新建 views 包

<template><div></div>
</template><script>export default{data(){return{}},methods:{},mounted(){}}
</script><!--组件相关的样式  -->
<style>
</style>

新建 router 包

import Vue from 'vue';/* 导入vue */
import router from 'vue-router'; /* 导入路由 *//* 导入我们自己创建的组件 */
import Login from "../views/Login"//可以不需要文件后缀名
import Main from "../views/Main"
import StudentList from "../views/student/StudentList"
import BookList from "../views/book/BookList"
import RecordList from "../views/record/RecordList"
import Return from "../views/record/Return"Vue.use(router);let rout = new router({routes: [{//默认什么地址都不给的时候,自动访问指定组件path: '/',//什么都不写component:Login},{path: '/login',component:Login},{path:'/main',component:Main,children:[ {path:'/studentList',component:StudentList},{path:'/bookList',component:BookList},{path:'/recordList',component:RecordList},{path:'/return',component:Return} ]},]
});
//导出路由对象
export default rout;
// 每次进行组件路由是, 都会触发下面代码的执行
rout.beforeEach((to,from,next)=>{//to.path获取的是我们本次要跳转的路由地址if(to.path=='/login'){//如果用户访问的是登录页,直接放行  地址与上面定义的要一致return next();}else{let account = sessionStorage.getItem("account");if(account==null){ //判断是否存储了账号信息return next("/login");//用户还没有登录, 就调转到登录页面}else{return next();//用户语句登录,放行}}
})

配置main.js路由

import Vue from 'vue'//导入vue.js
import App from './App.vue'//导入默认组件//导入路由组件
import router from './router/index.js'/* 当前文件夹下的router下的index.js文件 */
Vue.use(router);Vue.config.productionTip = false/* 创建一个唯一的vue对象 */
new Vue({render: h => h(App),//项目启动时,默认访问APP.vue组件router,
}).$mount('#app');//el:#app"

 四. ElementUI

    Element是基于Vue2.0的桌面端组件库 Element - 网站快速成型工具

(1)安装ElementUI

npm i element-ui -S

(2)在main.js中导入elementui组件

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);

(3)views 

views中添加我们的组件(如下图 主页面组件)

1.精简版

2.丰富版

可以使用element中的组件,可以访问以下地址查找所需要的组件


http://www.dtcms.com/a/438256.html

相关文章:

  • 鸿蒙Next中使用Socket进行网络通信:完整指南与实战
  • dw如何做商业网站淘宝网站建设流程
  • 网站做好了 怎么做解析wordpress 怎么迁移
  • GNS3 3.0.5新版教程,以及Cloud设备找不到VMware网卡的解决方法
  • 比奇堡合唱团制作教学,AI翻唱教学动漫角色歌曲
  • 活动展板设计:大尺寸 + 高分辨率,打印清晰
  • 深圳市城乡建设部网站首页一个网站如何做盈利
  • 【IMX6ULL驱动学习】I2C驱动
  • 基于物联网数据采集的大型应用程序软件架构设计:核心要点、结构内容与链路关系
  • 【连载5】云数据库 MySQL 热点更新功能介绍
  • (四)Webpack、Slot与Vue CLI脚手架
  • 【附源码】个人事务管理系统的设计与实现
  • 基于PCIe(XDMA)的多路(1-32路)信号采集与回放子系统,多路视频、AD、光纤等信号,支持PR over PCIe
  • 【STM32项目开源】基于STM32的智能电子秤
  • 网站建设专用图形库西安网站快速排名提升
  • 红色php企业网站模板下载wordpress slider设置
  • Starting again-02
  • 【IMX6ULL驱动学习】PWM驱动
  • 智能向善” 核心,解析技术发展中的红利与风险平衡
  • 品牌 RWA 化构建白皮书
  • 个人数据泄露有哪些法律与安全风险?
  • 学习Java第二十九天——黑马点评33~36
  • 常见端口安全弱点汇总表
  • 抓取网站访问量小程序登录网址
  • LNMP 环境部署 WordPress
  • 从域名到网站建设完成的流程连云港做网站哪家好
  • 企业后端多节点部署实现大文件分片与断点上传
  • 算法入门:专题攻克主题一---双指针
  • 长春市城建网站网站建设相关问题
  • 设计模式(C++)详解——状态模式(State)(1)