分析vue脚手架
执行流程:
执行npm run serve。找到了main.js文件,之后引入Vue、App等等。后来找到App组件,发现里面用到了组件School,于是执行School组件,最终汇总到App组件。通过main.js的render函数将App组件放入容器。然后找到index.html就放到里面创建的容器app
main.js
1 <!--该文件是整个项目的入口文件--> 2 <!--引入Vue--> 3 import Vue from 'vue' 4 5 <!--引入App组件,它是所有组件的父组件--> 6 import App from './App.vue' 7 8 <!--关闭vue的生产提示--> 9 Vue.config.productionTip = false 10 11 <!--创建Vue实例对象-------vm--> 12 new Vue({ 13 <!--将App组件放入容器【引入的Vue并非完整的,缺少模板解析器。所以用render】--> 14 <!--.$mount('#app')相当于el:'#app'--> 15 render: h => h(App), 16 }).$mount('#app')
App.vue
1 <!--App组件结构--> 2 <template> 3 <div> 4 <!--静态资源放assets文件夹--> 5 <img alt="Vue logo" scr="./assets/logo.png"> 6 <School></School> 7 </div> 8 </template> 9 <!--App组件交互--> 10 <script> 11 <!--引入School组件,新建的组件放components文件夹--> 12 import School from './components/School.vue' 13 14 export default{ 15 name:'App', 16 components:{ 17 School 18 } 19 } 20 </script> 21 22 /*App组件样式。根据需求写或不写样式 23 <style> 24 </style> 25 */
School.vue
1 <!--template导入之后就没了,所以需要div包住里面的--> 2 <template> 3 <div class="demo"> 4 <h2>学校名称:{{schoolName}}</h2> 5 <h2>学校地址:{{address}}</h2> 6 <button @click="showName">点我提示学校名</button> 7 </div> 8 </template> 9 10 <!-- name:'School'命名组件名为School。<script>中包含可以交互的。比如data、methods、watch、computed--> 11 <script> 12 <!--暴露结构以便导入--> 13 export default{ 14 name:'School', 15 data(){ 16 return{ 17 schoolName:'尚硅谷', 18 address:'北京' 19 } 20 } 21 }, 22 methods:{ 23 showName(){ 24 alert(this.schoolName) 25 } 26 } 27 } 28 </script> 29 30 <!--可以没有style。如果不需要样式--> 31 <style> 32 .demo{ 33 background-color:orange;}
index.html
1 < !DOCTYPE html> 2 <htmL Lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <!--针对IE浏览器的一个特殊配置,含义是让IE浏览器以最高的渲染级别渲染页面--> 6 <meta http- equiv= "X -UA- Compatible" content="IE=edge"> 7 <!--开启移动端的理想视口--> 8 <meta name="viewport" content= "width=dev ice-width, initial-scale=1.0"> 9 <!--配置页签图标--> 10 <link rel="icon" href="<%= BASE_ URL %> favicon. ico"> 11 <!--配置网页标题。不用过分关注--> 12 <title> <%= htmLWebpackPlugin. options.title %></title> 13 14 </head> 15 <body> 16 <!--当浏览器不支持js时noscript中的元素就会被渲染--> 17 <noscript> 18 <strong>We're sorry but <%= htmLWebpackPlugin.options.title %> doesn't work.................</strong> 19 </noscript> 20 <!--容器--> 21 <div id="app"></div> 22 <!-- built fi les will be auto injected --> 23 </body> 24 </html>

浙公网安备 33010602011771号