![c0e99ce5272d70cd00931c8c819ff150.png](https://i-blog.csdnimg.cn/blog_migrate/d687d6ea4f394ea9fe3977b41fce19a5.jpeg)
声明:此文章只作为本人学习记录,鉴于本人水平极其有限,其中不免包含许多错误,不宜作为教程参考。
1.确保开发环境
Visual Studio 2019能够自动检测Vue项目的开发环境是否正常。
使用Visual Studio 2019创建空Vue.js项目后尝试运行后,Visual Studio 2019将自动下载安装开发环境。
![1b3e6908e17c2283619646638d1aa7eb.png](https://i-blog.csdnimg.cn/blog_migrate/54643f2add4db92ecd2361b1eda274c8.jpeg)
![57cb7ab1b5a82666a2771ef1c5ae4301.png](https://i-blog.csdnimg.cn/blog_migrate/78099c9fb824c44e9e64daaf52e084ac.png)
2.项目目录结构分析
Visual Studio 2019创建空Vue.js项目后,初始项目目录结构如下
![4c04e0a8739d831a1a42d12ced1771c7.png](https://i-blog.csdnimg.cn/blog_migrate/f21958e3b86c35af462c3d59796417d1.png)
2.1先从main.js分析
如图
![f2a16d4118ef5649c5ca4a54c521a3e4.png](https://i-blog.csdnimg.cn/blog_migrate/081201f936cf06409db5ea12eb99bc5c.png)
render: h => h(App) 是下面内容的缩写:
render: function (createElement) {
return createElement(App);
}
进一步缩写为(ES6 语法):
render (createElement) {
return createElement(App);
}
再进一步缩写为:
render (h){
return h(App);
}
按照 ES6 箭头函数的写法,就得到了:
render: h => h(App);
createElement 函数是用来生成 HTML DOM 元素的,Vue.js 里面的 createElement 函数,这个函数的作用就是生成一个 VNode节点,render 函数得到这个 VNode 节点之后,返回给 Vue.js 的 mount 函数,渲染成真实 DOM 节点,并挂载到根节点上。
$mount():将组件手动挂载至根节点
2.2 进一步分析App.vue
如图
![ff75595f1f25a0da89f559ebf9ebe11a.png](https://i-blog.csdnimg.cn/blog_migrate/ce4d3b633390232e092c61a9d3ac709c.jpeg)
逐步分析
<template>
<div id="app">
<Home msg="Hello world!" />
</div>
</template>
其中的<template>标签表示为组件模板
export default {
name: 'app',
components: {
Home //自定义组件Home//
}
};
export default能够导出组件,其中name只有作为组件选项起作用,类型为string,允许组件模板递归调用自身。组件在全局使用Vue.component()注册时,全局ID自动作为组件的name。name选项能够便于调试。
其中components 自定义了组件Home,Home来源于1.<template>标签 2.import Home from './components/Home.vue'。
2.3 进一步分析Home.vue
如图
![c2eb68cdfa37d4a2ac5a3fdfcdfffa2b.png](https://i-blog.csdnimg.cn/blog_migrate/d45b49812ec77af7dbc046f4e74d275c.jpeg)
<template>
<div class="home">
<h1>{{ msg }}</h1>
<p>Welcome to your new single-page application, built with <a href="https://vuejs.org" target="_blank">Vue.js</a>.</p>
</div>
</template>
其中的<template>同样为组件模板。
export default {
name: 'Home',
props: { //子组件//
msg: String
}
};
name: 'Home' 同上
props创建了子组件。表明数据msg类型为String,表现为Welcome to your new single-page application, built with Vue.js.</p>
2.4 分析package.json
如图
![e0a3e772ed6d8a44c2a2a06fafc860ef.png](https://i-blog.csdnimg.cn/blog_migrate/ba3eff6f0ff7320d15ccc1c05f60fd23.jpeg)
可以看到文件中包含的都为项目的相关版本描述和开发者信息与其他背景,这些内容解释为:
"name": 包名 "version": 包的版本号 main: 入口文件,一般都是 index.js scripts:支持的脚本,默认是一个空的 test keywords:关键字,有助于在人们使用 npm search 搜索时发现你的项目 "description": 包的描述 "author": 包的作者 repository: 包代码的repo信息,包括type和URL,type可以是git或者svn,url则是包的repo地址。 license:默认是 [MIT],项目许可证,让使用者知道是如何被允许使用此项目。 "dependencies": 生产环境依赖包列表 "devDependencies": 开发环境、测试环境依赖包列表 engines: 声明项目需要的node或npm版本范围
package.json方便对Vue项目管理。
2.5 index.html的分析
如图
![f1ef02336d7cac427273391079cfb2c6.png](https://i-blog.csdnimg.cn/blog_migrate/5e0923c123ea555beefa65ed2098b74b.jpeg)
浏览器访问项目,最先访问的是index.html文件。而文件其中有一行<div id="app"></div>。浏览器执行至此会转而执行挂载在id为app的Vue实例,这点在main.js中的
new Vue({
render: h => h(App)
}).$mount('#app');
已经得到体现。
3.总结与演示运行
![4d8877d729987ea517e22e468ec5ab56.png](https://i-blog.csdnimg.cn/blog_migrate/c9a4cfe4cc279bd5e55e720a7f98d6b0.png)
在Vue项目在浏览器上运行时,index.html作为浏览器执行入口,main作为项目执行入口。
![d6156df1227106da14175e1e9a3a5889.png](https://i-blog.csdnimg.cn/blog_migrate/aad11d947ed09120f42fe9922fad7b7b.jpeg)
而index.html中的title等信息会被正常运行,与常规Web项目保持一致。
![268078d969527fc2ebe9726169d44c5a.png](https://i-blog.csdnimg.cn/blog_migrate/1b0ce4a07fc37315eef9610068ea0668.png)