Vue之项目搭建
一、Vue自动化工具的安装
nvm:nodejs 版本管理工具。
也就是说:一个 nvm 可以管理很多 node 版本和 npm 版本。
nodejs:在项目开发时的所需要的代码库
npm:nodejs 包管理工具。
在安装的 nodejs 的时候,npm 也会跟着一起安装,它是包管理工具。
npm 管理 nodejs 中的第三方插件
1,安装nvm
它是一个node管理工具,当我们的电脑上有多个node版本时,nvm可以帮我们切换node版本。
下载地址:https://github.com/coreybutler/nvm-windows/releases
下载下来后解压安装就可以了,然后配置环境变量:我是解压在d盘的tool文件夹下,
常用的nvm命令:直接在cmd中输入
nvm list # 列出目前在nvm里面安装的所有node版本
nvm install node版本号 # 安装指定版本的node.js
nvm uninstall node版本号 # 卸载指定版本的node.js
nvm use node版本号 # 切换当前使用的node.js版本
2,安装node
由于我们已经安装上nvm,所以我们就可以借助nvm安装node,由于install默认是从国外下载,所以速度有可能会慢,我们可以把使用国内的镜像,这样速度就会快点,于是我们需要修改nvm文件夹下的settings.txt文件,
arch: 64
proxy: none
node_mirror: http://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/
只需要在settings.txt文件下加上这四行代码既可
在cmd中输入:nvm install node版本号就行了
3,安装npm
在安装node完成后,会同时帮我们安装一个包管理器npm,所以在上面安装node的时候就已经帮我们安装好npm了。npm就相当于python的pip,可以通过npm命令来安装node的包。常用命令:
npm install -g 包名 # 安装模块 -g表示全局安装,如果没有-g,则表示在当前项目安装
npm list # 查看当前目录下已安装的node包
npm view 包名 engines # 查看包所依赖的Node的版本
npm outdated # 检查包是否已经过时,命令会列出所有已过时的包
npm update 包名 # 更新node包
npm uninstall 包名 # 卸载node包
npm 命令 -h
4,安装Vue-cli
直接在cmd中输入:npm install -g vue-cli
二、使用Vue-CLI创建项目
例如我想d盘的data文件夹下创建一个vue项目,于是我们打开cmd,来到d盘下的data目录输入:vue init webpack 项目名
访问提供的地址:
项目创建完成。
// 生成一个基于 webpack 模板的新项目
vue init webpack 项目名 // 启动开发服务器
cd myproject
npm run dev # 运行这个命令就可以启动node提供的测试http服务器 ctrl+c 停止服务器
三、项目目录结构和执行流程
1,目录结构
用pycharm打开项目:
src 主开发目录,要开发的单文件组件全部在这个目录下的components目录下 static 静态资源目录,所有的css,js文件放在这个文件夹 dist项目打包发布文件夹,最后要上线单文件项目文件都在这个文件夹中[后面打包项目,让项目中的vue组件经过编译变成js 代码以后,dist就出现了] node_modules目录是node的包目录, config是配置目录, build是项目打包时依赖的目录 src/router 路由,后面需要我们在使用Router路由的时候,自己声明.
2,执行流程
整个项目的主文件是index.html,index.html会引入src文件夹中的main.js文件,main.js文件会导入顶级单文件组件App.vue文件,App.vue文件会通过组件嵌套或者路由来引用components文件夹中的其他单文件组件。
四、初始化项目
1,清除页面上默认存在的东西,还原得到一个空白的页面
1.1 删除helloworld组件
1.2 清除App.vue下的样式
现在,再次打开地址,就是空白的:
2,安装路由vue-router
2.1 下载路由组件
要在本项目的目录下输入指令:npm install vue-router
2.2 配置路由
首先在src文件夹创建一个routers的文件夹,然后再routers文件夹下创建一个index.js文件,写入:
import Vue from "vue"
import Router from "vue-router" // 这里导入可以让让用户访问的组件 Vue.use(Router); export default new Router({
// 设置路由模式为‘history’,去掉默认的#
mode: "history",
routes:[
// 路由列表 ]
})
其次是打开main.js文件,把router对象注册到vue中
最后在App.vue组件,添加显示路由对应的内容
这样,关于路由的配置就完成了,我们之后只需要在index.js文件中添加路由列表既可
3、引入ElementUI
在之前的前端页面中我们使用过jQuery,bootstrap框架,在vue前端项目中,我们可以使用ElementUl框架,它和bootstrap一样的,别人已经写好的组件,我们直接拿来用既可,很方便。
3.1 快速安装elementUI
在本项目的目录下输入指令:npm install element-ui
3.2 配置elementUI
在main.js文件中写入:
4,引入axios
4.1 下载axios
在项目的目录下输入指令:npm install axios
4.2 配置axios
在main.js文件中,导入axios,并把它挂载到vue中
五、创建一个组件
1,在components文件夹中创建一个后缀为vue的文件
<template>
<div>
//在这写html
</div>
</template> <script>
export default {
name:'home',
data:function () {
return {
// 这里是data数据
}
}
}
</script> <style scoped>
//这里写css代码
</style>
2,添加路由列表
在index.js文件中写入:
六、创建子组件,添加到其他组件中,完成组件嵌套
1,也是要创建组件
只要是组件,其创建过程都是一样的,也要那三部分组成
2,把子组件引入到其他组件中,我把forms组件引入到tables组件中去
把子组件引入到其他组件中去,我们不需要对子组件做任何改动,只需要在父组件(即要引入子组件的组件)添加代码就行
七、效果
1,代码
<template>
<div id="tables">
<el-button type="primary" @click="add">添加</el-button>
<table>
<tr>
<th>ID</th>
<th>名称</th>
<th>面积</th>
<th>人口</th>
<th>GDP</th>
<th>操作</th>
</tr>
<tr v-for="value,key in tableData">
<td>{{value.id}}</td>
<td>{{value.name}}</td>
<td>{{value.area}}</td>
<td>{{value.population}}</td>
<td>{{value.gdp}}</td>
<td>
<el-button type="info" @click="edit(key)">编辑</el-button>
<el-button type="warning" @click="del(key)">删除</el-button>
</td>
</tr>
</table>
<forms :province="province" :state="state" :tableData="tableData" @cancel="is_show" :edit_key="edit_key"/>
</div>
</template> <script>
import forms from './forms'
export default {
name:'tables',
data:function () {
return {
tableData: [{
id: 1,
name: '广东',
area: 20.3,
population:5.3,
gdp:5.5
},],
province:{},
state:false,
edit_key:-1
}
},
components:{
forms
},
created:function(){
let _this=this;
this.$axios.get('http://127.0.0.1:8000/homework/tables/')
.then(function (response) {
_this.tableData=response.data;
})
.catch(function (error) {
console.log(error);
});
},
methods:{
add:function () {
this.state=true
},
is_show:function (value) {
this.state= !value;
this.province={};
this.edit_key=-1
},
edit:function (key) {
this.state=true;
this.edit_key=key;
this.province=this.tableData[key]
},
del:function (key) {
this.tableData.splice(key,1)
}
}
}
</script> <style scoped>
#tables{
width: 1200px;
margin: 0 auto;
}
table{
width: 1000px;
border-collapse: collapse; /* 合并表格的边框 */
}
tr{
height: 42px;
}
table,td,th{
border: 1px solid black;
text-align: center;
}
</style>
tables.vue代码
<template>
<div id="forms" v-show="state">
<div class="box">
<el-row>
<el-col :span="">
<label for="name">名称:</label>
<input type="text" id="name" v-model="province.name">
</el-col>
<el-col :span="">
<label for="area">面积:</label>
<input type="text" id="area" v-model="province.area">
</el-col>
<el-col :span="">
<label for="population">人口:</label>
<input type="text" id="population" v-model="province.population">
</el-col>
<el-col :span="">
<label for="gdp">GDP:</label>
<input type="text" id="gdp" v-model="province.gdp">
</el-col>
<el-col :span="">
<el-button type="success" @click="edit_key<0?add():save()">提交</el-button>
<el-button type="danger" @click="cancel">取消</el-button>
</el-col>
</el-row>
</div> </div>
</template> <script>
export default {
name:'forms',
props:['province','state','tableData','edit_key'],
data:function () {
return { }
},
methods:{
add:function () {
let value=0;
if (this.tableData.length==0){
value=1
}
else {
value=this.tableData[this.tableData.length-1].id+1;
}
this.province['id']=value;
this.tableData.push(this.province);
this.cancel();
},
save:function(){
this.cancel();
let num=this.edit_key;
this.tableData[num]=this.province
},
cancel:function () {
this.$emit('cancel',this.state)
}
}
}
</script> <style scoped>
#forms{
width: 100%;
height:100%;
background-color: rgba(235,235,235,0.5);
position: absolute;
top: 0;
left: 0;
}
.box{
margin: 0 auto;
margin-top: 200px;
width: 400px;
height: 300px;
background-color: white;
padding: 20px 30px;
}
.box .el-col{
margin-bottom: 20px;
}
.box input{
width:300px ;
height: 30px;
}
</style>
forms.vue代码
2,效果图
上面完成了表格的增删改查功能。在tables组件中我用了axios向一个接口发送了请求,拿回很多省份的信息。tables组件和forms组件间实现了数据双向传递。从这个小小案例中基本反映出所有的功能,无论是多么大的页面,或者说有多少个组件;不管有多少个路由,你只需要添加路由列表和组件之间嵌套就可以实现任何东西了;任何组件都可以成为父组件,只要你往其中添加子组件就行;也都可以成为子组件,你只要把它添加到其他组件中既可;任何组件都也可以通过一个路由访问到,你只需给这个组件添加一个路由关系既可。
Vue之项目搭建的更多相关文章
- Vue的项目搭建及请求生命周期
目录 Vue的项目搭建及请求生命周期 Vue-CLI的项目搭建 环境搭建 项目创建 pycharm运行Vue项目 Vue项目的大体结构 Vue的请求生命周期 两个小用法 Vue的项目搭建及请求生命周期 ...
- VUE 脚手架项目搭建
1. 概述 1.1 说明 vue-cli是一个官方发布vue.js项目脚手架,使用vue-cli可以快速创建vue项目.GitHub地址是:https://github.com/vuejs/vue-c ...
- (转)windows环境vue+webpack项目搭建
首先,vue.js是一种前端框架,一般利用vue创建项目是要搭配webpack项目构建工具的,而webpack在执行打包压缩的时候是依赖node.js的环境的,所以,要进行vue项目的开发,我们首先要 ...
- node+mysql+vue+express项目搭建
第一步:项目搭建之前首先需要安装node环境和MySQL数据库. 在已经完成上述的条件下开始进行以下操作: npm install @vue/cli -g (-g 代表全局安装) 初始化项目 v ...
- VUE环境项目搭建以及简单的运行例子
1.打开cmd命令窗口,node-v和npm-v可以查看相应的安装版本信息. 2.使用一下命令全局安装vue-cli. 1)npm install -g vue-cli 2)如果使用淘宝镜像,则是 ...
- AspNetCore MVC + Vue.Js 项目搭建
1.准备 全文重点在于搭建环境,其他相关知识点请百度. VS2017 升级到最新的版本 安装 net core 2.0 安装 npm (npm相关使用请百度或咨询前端小伙伴) 全局安装 webpack ...
- vue脚手架项目搭建失败
可能是ssl 的问题 解决办法: 1. npm config set strict-ssl false 2. npm install -g supervisor 以上完成后vue ui 或vue cr ...
- vue企业项目搭建过程(vue-cli脚手架超详细教程 傻瓜-入门)
vue作为现在主流的前端框架,有必要学习一下. vue的官方文档还是不错的,开源中文,一个爽字形容. 如果不是实际开发需要vue-cli构建项目,那么可以在加一个爽. 然而要构建的时候发现官方文档还是 ...
- VUE创建项目
Vue Cli项目搭建 vue项目需要自建服务器:node 什么是node: 用C++语言编写,用来运行JavaScript语言 node可以为前端项目提供server (包含了socket) ...
随机推荐
- spring深入学习(五)-----spring dao、事务管理
访问数据库基本是所有java web项目必备的,不论是oracle.mysql,或者是nosql,肯定需要和数据库打交道.一开始学java的时候,肯定是以jdbc为基础,如下: private sta ...
- tab下图片要求
下面是每个tab的属性: 属性 类型 必填 说明 pagePath String 是 页面路径,必须在pages中先定义 text String 是 tab上按钮文字 iconPath String ...
- Apache Drill - join HBase and RDBMs
HBase作为Nosql的常用系统之一,在很多大数据应用/平台中广泛使用.例如通过Spark统计后将结果存放到HBase中.通常统计结果还需要进一步和元数据或者字典表关联从而得到最终结果显示,这意味着 ...
- 【接口时序】3、UART串口收发的原理与Verilog实现
一.软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1.FPGA型号:XC6SLX45- ...
- Codeforces Round #525 (Div. 2) E. Ehab and a component choosing problem 数学
题意:给出树 求最大的sigma(a)/k k是选取的联通快个数 联通快不相交 思路: 这题和1个序列求最大的连续a 的平均值 这里先要满足最大平均值 而首先要满足最大 也就是一个数的时候可 ...
- Mac 下 Gradle 环境配置
1. gradle路径的查找 然后gradle 右键 显示简介 复制下蓝色的 2. 环境变量的配置 在.bash_profile文件中,添加如下图选中内容的配置信息: 执行source .bash_p ...
- Maven 项目中的 pom.xml 文件内容说明
下面是一个比较全面的 POM 文件的结构,当然常用的并不需要这么多配置,视自己的项目需求而定. <project xmlns="http://maven.apache.org/POM/ ...
- javascript 内存模型
我对于 JavaScript 的内存模型一直都比较困惑,很想了解在操作变量的时候,JS 是如何工作的.如果你和我有同样的困惑,希望这篇文章能给你一些启发. 译文,喜欢原文的可以直接拉到底部 当我们声明 ...
- fiddler 使用方法汇总
作为网络开发人员,怎能不使用一些抓包工具呢?fiddler是个不错的选择. 不过,一般情况下,我们往往使用浏览器自带的控制台的[网络]选项就可以达到查看数据的通信情况了,当然,一些浏览器不容易捕捉的事 ...
- Jmeter HTTP请求后响应数据显示乱码解决方法
Jmeter请求后结果树里无论是text还是html响应数据显示乱码,这是因为jmeter 编码格式配置文件默认不开启导致的,解决方法如下: 1)进入jmeter-***\bin目录下,找到jmete ...