Vue项目的简单搭建

Vue小项目搭建

1.Vue环境搭建与安装

1.1安装node.js环境

新版的Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,
也可以理解为用来安装/卸载Node.js需要装的东西

node官方地址http://nodejs.cn/download/

一般window 下载64位,根据自己电脑配置选择合适的版本

下载完成后,双击“node-v14.6.0-x64.msi”文件,开始安装Node.js,无脑点击下一步安装即可

1.打开控制台【win+r】 查询是否安装成功 node -v 指令查看
2.使用npm -v 指令查看npm版本是否安装成功
3.更改npm下载的本地仓库下载镜像 执行:$ npm install -g cnpm --registry=https://registry.npm.taobao.org
4.安装vue-cli脚手架 执行:npm install -g @vue/cli 才能使用Vue指令来创建vue项目

在这里插入图片描述
在这里插入图片描述

1.2创建Vue项目

在自己的盘符下创建vue项目空文件夹。在地址栏输入cmd进入控制台。

在这里插入图片描述
在这里插入图片描述

执行 【npm create vue项目名 】创建vue项目

在这里插入图片描述

选择那种方式创建vvue项目 可以创建vue2和vue3的项目,还可以手动选择vue组件创建项目【这里我们选择vue2来创建项目】

在这里插入图片描述

创建完成用vscode打开该文件夹项目,用contorl+~ 打开终端,执行npm run serve 运行该项目,control+c
快捷键停止该项目,

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.3给浏览器安装vue调试工具

下载Devtool调试工具 点击 install the
extension 选择合适的浏览器的版本下载安装插件即可

install在这里插入图片描述

点击使用该插件 F12 调试程序,把Vue拉到前排即可。

在这里插入图片描述

2.对创建的vue项目的各个组件的引入

2.1 引入vue-router

1.执行 npm install vue-router@4 4为版本,尽量选择合适的版本
2.安装完成后在package.json文件中发现该组件的依赖
3.在main中引入vue-router,并使用 Vue.use(VueRouter);
4.创建router/index.js文件
5.在main.js中引入该路由,并在Vue实例中配置该路由 router:router;

在这里插入图片描述
在这里插入图片描述

router/index.js 文件的基本格式

// 该文件专门用于创建整个应用的路由器
//引入vue-router组件
import VueRouter from 'vue-router'
//引入各个子组件
import About from '../pages/About'
import Home from '../pages/Home'


//创建并暴露一个路由器
const router =  new VueRouter({
	routes:[
		{
			name:'guanyu',//路由别名
			path:'/about',//路由路径
			component:About,//路由组件
			meta:{title:'关于'}//路由参数
		},
		{
			name:'zhuye',
			path:'/home',
			component:Home,
			meta:{title:'主页'},
			children:[      //子路由 多级路由
				{
					name:'xinwen',
					path:'news',
					component:News,
					meta:{isAuth:true,title:'新闻'},
					beforeEnter: (to, from, next) => {  //独享路由
						console.log('独享路由守卫',to,from)
						if(to.meta.isAuth){ //判断是否需要鉴权
							if(localStorage.getItem('school')==='atguigu'){
								next()
							}else{
								alert('学校名不对,无权限查看!')
							}
						}else{
					
					
							next()
						}
					}
				},
				{
					name:'xiaoxi',
					path:'message',
					component:Message,
					meta:{isAuth:true,title:'消息'},
					children:[
						{
							name:'xiangqing',
							path:'detail',
							component:Detail,
							meta:{isAuth:true,title:'详情'},

							//props的第一种写法,值为对象,该对象中的所有key-value都会以props的形式传给Detail组件。
							// props:{a:1,b:'hello'}

							//props的第二种写法,值为布尔值,若布尔值为真,就会把该路由组件收到的所有params参数,以props的形式传给Detail组件。
							// props:true

							//props的第三种写法,值为函数
							props($route){
								return {
									id:$route.query.id,
									title:$route.query.title,
									a:1,
									b:'hello'
								}
							}

						}
					]
				}
			]
		}
	]
})



router.afterEach((to,from)=>{
	console.log('后置路由守卫',to,from)
	document.title = to.meta.title || '硅谷系统'
})

export default router   //暴露接口

main.js文件引入并使用vue-router 这里 Vue.config.productionTip = false //关闭无效提醒

import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';//引入elemen-ui组件
import VueRouter from 'vue-router';//引入路由组件
import router from "./router" //引入创建暴露的路由
import 'element-ui/lib/theme-chalk/index.css'; //引入element-ui的css样式
//引入全局样式
import "./assets/grouble.css";
Vue.use(VueRouter) //使用路由

Vue.use(ElementUI,{size:"small"})//使用element-ui
Vue.config.productionTip = false //关闭无效提醒

new Vue({
  render: h => h(App),
  router:router, //在vue中配置路由
  
}).$mount('#app')

2.2引入element-ui组件

1.npm安装 执行 npm i element-ui -S
2.安装该模块后packgage.json中出现该依赖
3.main.js中引入该模块element-ui 和该css文件:import ‘element-ui/lib/theme-chalk/index.css’; //引入element-ui的css样式
4.Vue使用element-ui :Vue.use(ElementUI,{size:“small”})//使用element-ui

在这里插入图片描述


import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';//引入elemen-ui组件
import VueRouter from 'vue-router';//引入路由组件
import router from "./router" //引入创建暴露的路由
import 'element-ui/lib/theme-chalk/index.css'; //引入element-ui的css样式
//引入全局样式
import "./assets/grouble.css";
Vue.use(VueRouter) //使用路由

Vue.use(ElementUI,{size:"small"})//使用element-ui
Vue.config.productionTip = false //关闭无效提醒

new Vue({
  render: h => h(App),
  router:router, //在vue中配置路由
  
}).$mount('#app')


小提示:在vueconfig.js文件mode中加入 lintOnSave: false 配置可以关闭语法检查

vue.config.js文件

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  //关闭语法检查
  lintOnSave: false
})

2.3 引入vuex

1.执行 npm install vuex --save 安装vuex。
2.创建store/index.js目录文件夹
3.在main.js文件夹中引入store/index.js的暴露的vuex接口

在这里插入图片描述

store/index.js文件

//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用Vuex插件
Vue.use(Vuex)

//准备actions——用于响应组件中的动作
const actions = {
	/* jia(context,value){
		console.log('actions中的jia被调用了')
		context.commit('JIA',value)
	},
	jian(context,value){
		console.log('actions中的jian被调用了')
		context.commit('JIAN',value)
	}, */
	jiaOdd(context,value){
		console.log('actions中的jiaOdd被调用了')
		if(context.state.sum % 2){
			context.commit('JIA',value)
		}
	},
	jiaWait(context,value){
		console.log('actions中的jiaWait被调用了')
		setTimeout(()=>{
			context.commit('JIA',value)
		},500)
	}
}
//准备mutations——用于操作数据(state)
const mutations = {
	JIA(state,value){
		console.log('mutations中的JIA被调用了')
		state.sum += value
	},
	JIAN(state,value){
		console.log('mutations中的JIAN被调用了')
		state.sum -= value
	}
}
//准备state——用于存储数据
const state = {
	sum:0, //当前的和
	school:'尚硅谷',
	subject:'前端'
}
//准备getters——用于将state中的数据进行加工
const getters = {
	bigSum(state){
		return state.sum*10
	}
}

//创建并暴露store
export default new Vuex.Store({
	actions,
	mutations,
	state,
	getters
})

main.js文件

//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//引入插件
import vueResource from 'vue-resource'
//引入store
import store from '.ore'

//关闭Vue的生产提示
Vue.config.productionTip = false
//使用插件
Vue.use(vueResource)

//创建vm
new Vue({
	el:'#app',
	render: h => h(App),
	store,
	beforeCreate() {
		Vue.prototype.$bus = this
	}
})
vuex模块化

模块化结构

在这里插入图片描述

count.js

//求和相关的配置
export default {
	namespaced:true,
	actions:{
		jiaOdd(context,value){
			console.log('actions中的jiaOdd被调用了')
			if(context.state.sum % 2){
				context.commit('JIA',value)
			}
		},
		jiaWait(context,value){
			console.log('actions中的jiaWait被调用了')
			setTimeout(()=>{
				context.commit('JIA',value)
			},500)
		}
	},
	mutations:{
		JIA(state,value){
			console.log('mutations中的JIA被调用了')
			state.sum += value
		},
		JIAN(state,value){
			console.log('mutations中的JIAN被调用了')
			state.sum -= value
		},
	},
	state:{
		sum:0, //当前的和
		school:'尚硅谷',
		subject:'前端',
	},
	getters:{
		bigSum(state){
			return state.sum*10
		}
	},
}

person.js

//人员管理相关的配置
import axios from 'axios'
import { nanoid } from 'nanoid'
export default {
	namespaced:true,
	actions:{
		addPersonWang(context,value){
			if(value.name.indexOf('王') === 0){
				context.commit('ADD_PERSON',value)
			}else{
				alert('添加的人必须姓王!')
			}
		},
		addPersonServer(context){
			axios.get('https://api.uixsj.cn/hitokoto/get?type=social').then(
				response => {
					context.commit('ADD_PERSON',{id:nanoid(),name:response.data})
				},
				error => {
					alert(error.message)
				}
			)
		}
	},
	mutations:{
		ADD_PERSON(state,value){
			console.log('mutations中的ADD_PERSON被调用了')
			state.personList.unshift(value)
		}
	},
	state:{
		personList:[
			{id:'001',name:'张三'}
		]
	},
	getters:{
		firstPersonName(state){
			return state.personList[0].name
		}
	},
}

index.js

//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
import countOptions from './count'
import personOptions from './person'
//应用Vuex插件
Vue.use(Vuex)

//创建并暴露store
export default new Vuex.Store({
	modules:{
		countAbout:countOptions,
		personAbout:personOptions
	}
})

main.js

//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//引入插件
import vueResource from 'vue-resource'
//引入store
import store from './sore'

//关闭Vue的生产提示
Vue.config.productionTip = false
//使用插件
Vue.use(vueResource)

//创建vm
new Vue({
	el:'#app',
	render: h => h(App),
	store,
	beforeCreate() {
		Vue.prototype.$bus = this
	}
})```

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值