转自博客园: 如何搭建一个vue项目。
一、安装node环境
1.下载地址为:https://nodejs.org/en/
2.检查是否安装成功:如果输出版本号,说明我们安装node环境成功
node -v
npm -v
3.为了提高我们的效率,可以使用淘宝的镜像:http://npm.taobao.org/
输入:
npm install -g cnpm –registry=https://registry.npm.taobao.org
即可安装npm镜像,以后再用到npm的地方直接用cnpm来代替就好了。
检查是否安装成功:
cnpm -v
二、搭建vue项目环境
1.全局安装vue-cli
npm install --global vue-cli
可能会安装不上,用下面的命令安装
npm i -g @vue/cli-init
2.进入你的项目目录,创建一个基于 webpack 模板的新项目
vue init webpack vue-demo
说明:
Vue build ==> 打包方式,回车即可;
Install vue-router ==> 是否要安装 vue-router,项目中肯定要使用到 所以Y 回车;
Use ESLint to lint your code ==> 是否需要 js 语法检测 目前我们不需要 所以 n 回车;
Set up unit tests ==> 是否安装 单元测试工具 目前我们不需要 所以 n 回车;
Setup e2e tests with Nightwatch ==> 是否需要 端到端测试工具 目前我们不需要 所以 n 回车;
3.进入项目:cd vue-demo,安装依赖
安装成功后,项目文件夹中会多出一个目录: node_modules
4.启动项目
npm run dev
项目启动成功:
三、Vue项目目录讲解
1、build:构建脚本目录
- build.js ==> 生产环境构建脚本;
- check-versions.js ==> 检查npm,node.js版本;
- utils.js ==> 构建相关工具方法;
- vue-loader.conf.js ==> 配置了css加载器以及编译css之后自动添加前缀;
- webpack.base.conf.js ==> webpack基本配置;
- webpack.dev.conf.js ==> webpack开发环境配置;
- webpack.prod.conf.js ==> webpack生产环境配置;
2、config:项目配置
- dev.env.js ==> 开发环境变量;
- index.js ==> 项目配置文件;
- prod.env.js ==> 生产环境变量;
3、node_modules:npm 加载的项目依赖模块
4、src:这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件:
-
assets:资源目录,放置一些图片或者公共js、公共css。这里的资源会被webpack构建;
-
components:组件目录,我们写的组件就放在这个目录里面;
-
router:前端路由,我们需要配置的路由路径写在index.js里面;
-
App.vue:根组件;
-
main.js:入口js文件;
5、static:静态资源目录,如图片、字体等。不会被webpack构建。
6、index.html:首页入口文件,可以添加一些 meta 信息等。
7、package.json:npm包配置文件,定义了项目的npm脚本,依赖包等信息。
8、README.md:项目的说明文档,markdown 格式。
9、.xxxx文件:这些是一些配置文件,包括语法配置,git配置等。
四、开始第一个vue项目
ps:注意部分参数后、方法后、冒号后需跟空格。部分报错是没有加空格导致。
1、在components目录下新建一个views目录,里面写我们的vue组件First.vue。
在First.vue中:
<!--template 写 html,template下只能有一个div,其他是在div里面 -->
<template>
<div class="first-app">
{{msg}}
</div>
</template>
<!-- script写 js -->
<script>
export default {
name: "First",
data() {
return{
msg: "Welcome to FirstApp"
}
}
}
</script>
<!-- style写样式 -->
<style>
</style>
在router->index.js中配置路由路径:
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
// 引入First组件
import First from '../components/views/First'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
},
// 配置First的路由
{
path: '/first',
name: 'First',
component: First
}
]
})
访问:http://localhost:8080/#/first
2.组件引用
①.在components目录下新建sub文件夹,用于存放一下可以复用的子组件。比如新建一个Confirm.vue组件。
<template>
<div>{{msg}}</div>
</template>
<script>
export default {
data () {
return{
msg: "Welcome to ConfirmApp"
}
}
}
</script>
<style>
</style>
②.在父组件中引入子组件
在First.vue中
<!--template 写 html -->
<template>
<div class="first-app">
{{msg}}
<Confirm></Confirm>
</div>
</template>
<!-- script写 js -->
<script>
// 引入 Confirm组件
import Confirm from '../sub/Confirm'
export default {
name: "First",
data () {
return {
msg: "Welcome to FirstApp"
}
},
// 注册Confirm
components: {
Confirm
}
}
</script>
<!-- style写样式 -->
<style>
</style>
页面中调用了Confirm.vue组件
3.父子组件通信
父组件:First.vue
子组件:Confirm.vue
Confirm.vue
<template>
<div class="Confirm-app">
{{msg}}
<button @click="getButtonClick">{{text}}</button>
</div>
</template>
<script>
export default {
name: 'Confirm-app',
// props 父组件传递给子组件的值
props:['text'],
data () {
return{
msg: "Welcome to ConfirmApp"
}
},
methods: {
getButtonClick() {
// 触发当前实例上的事件。附加参数都会传给监听器回调。
// 向父组件传递对象msg的值
this.$emit('message',this.msg);
}
}
}
</script>
<style>
</style>
First.vue
<!--template 写 html -->
<template>
<div class="first-app">
{{msg}}
<Confirm text="注册" @message="getMessage"></Confirm>
</div>
</template>
<!-- script写 js -->
<script>
// 引入 Confirm组件
import Confirm from '../sub/Confirm'
export default {
name: "First",
data () {
return {
msg: "Welcome to FirstApp"
}
},
// 注册Confirm
components: {
Confirm
},
methods: {
// val由子组件传递给父组件的值
getMessage(val){
alert(val);
}
}
}
</script>
<!-- style写样式 -->
<style>
</style>
再次访问:http://localhost:8080/#/first
点击【注册】,提示获取到子组件Confirm.vue的msg值。
可以看见按钮的值是First.vue组件中text的值:
<Confirm text="注册" @message="getMessage"></Confirm>
4.使用路由搭建单页应用。
①.在views文件夹创建Second.vue组件;
<template>
<div>Welcome to SecondApp
<br />
<p><router-link to="/first">去第一个页面</router-link></p>
</div>
</template>
<script>
</script>
<style>
</style>
②.在router->index.js中引入Second组件并配置路由;
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
// 引入First组件
import First from '../components/views/First'
// 引入Second组件
import Second from '../components/views/Second'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
},
// 配置First的路由
{
path: '/first',
name: 'First',
component: First
},
// 配置Second的路由
{
path: '/second',
name: 'Second',
component: Second
}
]
})
③.在First.vue组件的div中添加跳转页面的代码。
<p><router-link to="/second">去第二个页面</router-link></p>
点击【去第二个页面】,跳转:
----- End -----
扩展:
Vue官方地址:https://router.vuejs.org/zh-cn/