VUE 进阶实践

目录

构建Vue项目 lifecycle+npm+webpack

Vue的生命周期 lifecycle

npm 概念

webpack 概念

vue-cli脚手架

作用

安装nodejs并验证

配置npm

脚手架安装

创建Vue项目 npm

工作空间

生成vue项目

启动项目 & 停止项目

测试访问

HBuilderX管理Vue项目

打开Vue项目

项目结构

目录结构

重要文件说明

调用关系图

自定义组件

概述

项目结构

 创建组件Car.vue

 修改App.vue,注册自定义组件

测试

安装 element-ui

安装

修改 main.js,引入Element

修改 Car.vue

基础知识

布局 layout

图标 icon

按钮 button

输入框 input

表格 table

表单 form

常见错误

Permission denied


构建Vue项目 lifecycle+npm+webpack

 



Vue的生命周期 lifecycle

使用vue做项目时,我们需要了解vue对象的生命周期和生命周期函数(Vue 实例从创建到销毁的过程),这样才能知道哪些事情应该在哪个函数里做。

如页面创建时,页面加载时,页面更新时,页面销毁时?

在这过程中,我们在每个特定阶段会触发一些方法(这些方法具备一些功能),我们给这些方法起了名字叫做生命周期钩子函数/组件钩子。

生命周期函数:

vue实例在某一个时间点会自动执行这些函数;
生命周期钩子函数不允许写成箭头函数;
可以分为3个阶段,一共8个钩子:初始化阶段(创建前/后, 载入前/后),运行中(更新前/后),销毁(销毁前/销毁后)

细分每个过程:
 


1    new Vue    创建vue实例
2    init events & lifecycle    开始初始化
3    beforeCreate    组件刚被创建,组件属于计算之前,如data属性等
4    init injections & reactivity    通过依赖注入导入依赖项
5    created    组件实例创建完成,属性已绑定,此时DOM还未生成
6    el 属性    检查vue配置,即new Vue()里面的el项是否存在,有就继续检查template项。没有则等到手动绑定调用v.$mount()
7    template    检查配置中的template项,如果没有,则被绑定区域的el对象的outHTML(即整个#app DOM ,包括<div id="app">和</div>标签)都作为被填充对象替换掉填充区域
8    beforeMount    模板编译、挂载之前
9    create v$el and replace el    编译、并替换了被绑定元素
10    mounted    编译、挂载
11    befor update    组件更新之前
12    updated    组件更新之后
13    destroy    当v.$destroy()被调用,开始拆卸组件和监听器,生命周期终结
 

在这里插入图片描述

npm 概念

npm(node package manager):nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等)

官网:

https://docs.npmjs.com/about-npm 英文官网

https://www.npmjs.cn/ 中文官网

webpack 概念


Webpack是前端自动化构建工具,它基于nodejs实现,可以帮助我们实现资源的合并、打包、压缩、混淆的诸多功能。可以快速构建一个Vue项目,包括各类文件(assets资源、scripts脚本、images图片、styles样式)。

官网:

https://webpack.js.org/
 

vue-cli脚手架


作用


vue脚手架指的是vue-cli,它是一个专门为单页面应用快速搭建繁杂的脚手架,它可以轻松的创建新的应用程序而且可用于自动生成vue和webpack的项目模板。
vue-cli就是Vue的脚手架工具,和我们工地看到的脚手架真是那么一回事,它帮助我们搭建基本的开发环境,好比架子搭建好了,利用它可以搞定目录结构,本地调试,单元测试,热加载及代码部署等。
vue-cli是由Vue提供的一个官方cli,专门为单页面应用快速搭建繁杂的脚手架。它是用于自动生成vue.js+webpack的项目模板,是为现代前端工作流提供了 batteries-included 的构建设置。只需要几分钟的时间就可以运行起来并带有热重载,保存时 lint 校验,以及生产环境可用的构建版本
 

在这里插入图片描述

安装nodejs并验证

安装nodejs,下一步下一步就可以,可以安装最新的15版本,win7的话可以安装14版本.使用以下dos命令提示符下执行:

node -v     # v8.11.3,至少8以上,最新的是v15.11.0

配置npm

Nodejs下的包管理器,Nodejs中包含了npm,无需单独安装.默认去官网下载资源,可以换成国内的镜像

npm config get registry # 查看当前配置的镜像,结果是默认的国外网址https://registry.npmjs.org/npm config set registry https://registry.npm.taobao.org #设置成淘宝镜像npm config get registry #再获取查看,结果是修改后的https://registry.npm.taobao.org/ 

参数说明
注意单词的大小写
 

-i 安装指令,全拼: install
-S 生产环境,全拼: --save
-D 开发环境,全拼: --save—dev
-O 可选依赖,全拼: --save—optional
-E 精确安装指定模块版本,全称:--save—exact
-g 全局安装,全拼: --global

脚手架安装

vue-cli: 用户生成Vue工程模板(帮你快速构建一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库)
vue-cli: 脚手架工具安装与配置(需要几分钟)

npm install vue-cli -g #安装vue-cli脚手架---可能比较慢,要等几分钟npm uninstall vue-cli -g #卸载vue-cli脚手架 --- 大可不必vue –V #查看版本where vue #vue安装在哪里

创建Vue项目 npm



工作空间

进入工作空间目录:D:\workspace\vue

生成vue项目

基于vue.js的官方webpack模板:(乱码无需理会)
webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包

vue init webpack jt01 #此处项目名不能使用大写---可能比较慢,要等
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

注:

  • jt01 为自定义的 项目名称
  • 产生项目webpack模板,目录100+m,可见内容多复杂,庞大
  • 会自动生成node_modules临时目录,可以删除,每次编译、运行会自动产生

启动项目 & 停止项目

cd jt01 # 进入项目目录npm run dev # 自动启动服务,ctrl+c 停止,可能要等几分钟

测试访问

注意:端口号可能不同,默认为8080,如果发现端口占用npm很聪明,它会自动改变端口号,以其具体提示的端口信息为准。

在这里插入图片描述

在这里插入图片描述

HBuilderX管理Vue项目



打开Vue项目

HBuilderX是最新前端开发利器之一,全面支持Vue的开发,具有丰富的提示,使用它打开:D:\workspace\vue\jt01目录(可自行定义自己的目录)

 在这里插入图片描述

 在这里插入图片描述

项目结构

在这里插入图片描述

目录结构


这个目录结构非常重要,大家要熟记。就如你要生孩子去妇幼保健院,你要游泳去游泳馆。规定好每个目录的作用,方式和位置就约定统一了。有了这套规则,文件就不会乱放,这样找资源时就知道到哪里找,写代码文件时就按功能放到指定的目录中。这种方式已经非常常见,如Maven构建项目目录有强制的约定,如Spring框架中约定大于配置。


view 就是用户要访问的页面都存放在这个目录下,如Index.vue
static中保存一些静态的资源,如jquery、css、图片等
src 目录是一个很大的目录,包罗万象
components 把项目中所需要的组件都放在此目录下,默认会创建一个HelloWorld.vue,我们可以自己添加,如添加Header.vue
router 访问的路径,Vue提倡的是SPA(Single Page WebApplication)单页面设计,这是以前旧页面中如果包含其他资源,必然涉及到路径问题。Html没有很好的解决这个问题,而router它是一种解决路径的新发明,很好的解决了多模块页面刷新问题。简而言之就是给组件指明一个路径,我们怎么去访问它。不同组件是依靠配置的路径router来访问的。Router非常强大,老系统是url改变是在服务端进行刷新,而router支持在客户端刷新,就是url变化,页面内容变化,但不请求服务器端,以前的程序是做不到的。此处不好理解,后期专门章节论述,不必心急,先记录下这个特点
在这里插入图片描述

重要文件说明


Vue项目这么多文件,它们什么关系?写代码该从哪里下手呢?
常见操作: 1, 在components里写自定义组件 2, 在App.vue里注册自定义组件 3, 在main.js里引入第三方js

 index.html 首页,Vue是SPA单页面开发,页面入口,定义了一个div,并设置id=app
 src/main.js 公共的组件就直接配置到这个文件中,私有的就配置到view中
在这里插入图片描述

 src/App.vue 根组件,可以添加自定义组件

 src/router/index.js 引入子组件HellWorld.vue

在这里插入图片描述

调用关系图

在这里插入图片描述

简单来说项目加载的过程是:

index.html->main.js->App.vue->index.js->HelloWorld.vue

可以看到Vue项目是自有一套规则,一套机制的,非常系统化的。有固定的文件,有自定义的文件,各自放在指定的目录下,指定的文件中,指定的地方,最终来实现用户的需求。那在开发之前,你就必须了解这套机制,写代码的时候就规则清晰,如有神助,知道该如果写代码,知道为什么这么写,代码文件该放在哪,它们是谁调用谁,互相怎么调用的了。
 

自定义组件



概述

组件(Component)是 Vue.js 最强大的功能之一。
组件可以扩展 HTML 元素,封装可重用的代码。
组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树

项目结构

 在这里插入图片描述

 创建组件Car.vue

 修改App.vue,注册自定义组件

测试

在这里插入图片描述

在这里插入图片描述

安装 element-ui


访问官网: https://element.eleme.cn/#/zh-CN/component/installation,查看组件指南

安装


在工程目录下,使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用。

npm i element-ui –D  # 下载资料,这可能要等几分钟

安装完成其文件保存在项目下的node_modules目录下:
在这里插入图片描述

修改 main.js,引入Element

你可以引入整个 Element,或是根据需要仅引入部分组件。我们先介绍如何引入完整的 Element。
你可以参考官网的【快速上手】

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
Vue.config.productionTip = falseimport ElementUI from 'element-ui'; //导入element
import 'element-ui/lib/theme-chalk/index.css';//导入element的css
//以上代码便完成了 Element 的引入。需要注意的是,样式文件需要单独引入。
Vue.use(ElementUI);//使用element/* eslint-disable no-new */
new Vue({el: '#app',router,components: { App },template: ''
})

修改 Car.vue

至此,一个基于 Vue 和 Element 的开发环境已经搭建完毕,现在就可以使用Element代码了。

基础知识



布局 layout

栅格体系:把页面分成24分栏,可以形成PC端、移动端自适应。

图标 icon

https://element.eleme.cn/#/zh-CN/component/icon

在这里插入图片描述

按钮 button

https://element.eleme.cn/#/zh-CN/component/button

在这里插入图片描述

输入框 input

  

表格 table

在这里插入图片描述

表单 form

在这里插入图片描述

常见错误



Permission denied

权限不足,windows以管理员身份运行,mac命令前加sudo

在这里插入图片描述

 在这里插入图片描述

清除缓存,重新安装

npm cache clean --forcenpm install


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部