一、IDEA搭建vue/cli脚手架

取消使用默认项目设置
目录结构
1. build 文件夹:用于存放 webpack 相关配置和脚本。开发中仅 偶尔使用 到此文件夹下 webpack.base.conf.js 用于配置 less、sass等css预编译库,或者配置一下 UI 库。
2. config 文件夹:主要存放配置文件,用于区分开发环境、线上环境的不同。 常用到此文件夹下 config.js 配置开发环境的 端口号、是否开启热加载 或者 设置生产环境的静态资源相对路径、是否开启gzip压缩、npm run build 命令打包生成静态资源的名称和路径等。
3. dist 文件夹:默认 npm run build 命令打包生成的静态资源文件,用于生产部署。
4. node_modules:存放npm命令下载的开发环境和生产环境的依赖包。
5. src: 存放项目源码及需要引用的资源文件。
6. src下assets:存放项目中需要用到的资源文件,css、js、images等。
7. src下componets:存放vue开发中一些公共组件:header.vue、footer.vue等。
8. src下emit:自己配置的vue集中式事件管理机制。
9. src下router:vue-router vue路由的配置文件。
10. src下service:自己配置的vue请求后台接口方法。
11. src下page:存在vue页面组件的文件夹。
12. src下util:存放vue开发过程中一些公共的.js方法。
13. src下vuex:存放 vuex 为vue专门开发的状态管理器。
14. src下app.vue:使用标签`<route-view></router-view>`渲染整个工程的.vue组件。
15. src下main.js:vue-cli工程的入口文件。
16. index.html:设置项目的一些meta头信息和提供`<div id="app"></div>`用于挂载 vue 节点。
17. package.json:用于 node_modules资源部 和 启动、打包项目的 npm 命令管理。
二、项目执行顺序
main.js是项目的入口,浏览器一开始加载就是加载main.js,其中里面通过import的方式引入了各种资源,然后新建了一个vue实例。
import { createApp } from 'vue' // 引入vue框架,vue2为import Vue from ‘vue’,
import App from './App.vue' // 引入App.vue组件(项目的根组件)
import router from './router' // 引入路由
import store from './store' // 引入store资源
// import 自定义名字 from ‘’(可省略后面的.vue)
createApp(App).use(store).use(router).mount('#app')
// vue2为下
// new Vue({
// router,
// store,
// render: h => h(App) //渲染函数,这个函数用来渲染组件(App.vue)的,h()里面可以传入任意想渲染的组件
、、
// }).$mount('#app') //手动挂载到id为#app的地方
//主要在public下的index.html,其中< div id=“app”>将会被组件替换掉,即所谓的挂载。
通俗的来讲,createApp(App)的那段代码就是将根组件App.vue下的< template>< /template>中间的html代码渲染完之后替代public下的index.html中id为app的html片段
随后访问的其实就是public下的index.html,只不过其内容由根组件决定
根组件
<template>
<div id="app">
hello
<router-view></router-view>
</div>
</template>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
nav {
padding: 30px;
}
nav a {
font-weight: bold;
color: #2c3e50;
}
nav a.router-link-exact-active {
color: #42b983;
}
</style>
根组件一般不放东西,只放路由,然后根据路由规则(当前的url)切换对应的组件内容进行展示
router-view
<router-view></router-view>
对应的是router下的index.js,里面可以配置访问路径和路径对应的组件
router-view 当你的路由path 与访问的地址相符时,会将指定的组件替换该 router-view
import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue' // 引入组件
const routes = [
{
path: '/',
name: 'home',
component: HomeView // 注册组件
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue') // 引入并注册组件
},
{
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL), //使访问的url地址没有#
routes
})
export default router
组件示例
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
// @是/src的别名
import HelloWorld from '@/components/HelloWorld.vue' // 导入组件并注册后即可<HelloWorld>使用组件
export default { // 暴露当前组件,才可以被外部使用
name: 'HomeView', // 组件名
components: { // 组测组件
HelloWorld
},
data() {
return {
msg:"xiaochen",
user:[
{
"id":1,
"name":"cyh"
},
{
"id":2,
"name":"czh"
}
]
}
},
methods:{
},
created() {// 生命周期
}
}
</script>
<style>
</style>
Q.E.D.