Vue cli单文件组件的使用
整个项目是一个主文件index.html,index.html中会引入src文件夹中的main.js,main.js中会导入顶级单文件组件App.vue,App.vue中会通过组件嵌套或者路由来引用其他页面组件文件,页面组件也可以嵌套或者路由引用的方式加载子组件。
组件有两种:脚本化组件、单文件组件
脚本化组件的缺点:
1 2 3 | html代码是作为js的字符串进行编写,所以组装和开发的时候不易理解,而且没有高亮效果。 脚本化组件用在小项目中非常合适,但是复杂的大项目中,如果把更多的组件放在html文件中,那么维护成本就会变得非常昂贵。 脚本化组件只是整合了js和html,但是css代码被剥离出去了。使用组件时还要另外引入css文件。 |
将一个组件相关的html结构,css样式,以及交互的JavaScript代码从html文件中剥离出来,合成一个文件,这种文件就是单文件组件,相当于一个组件具有了结构、表现和行为的完整功能,方便组件之间随意组合以及组件的重用,这种文件的扩展名为“.vue”,比如:“Home.vue”。
1 2 | 在template 编写html代码,script编写vue.js代码,style编写当前组件的样式代码 从上面可以看到,虽然我们现在使用了单文件组件,但是之前我们在脚本化阶段学习过的所有语法,在这里都是通用的。 |
构建一个组件:
在src/components目录下,可以创建当前页面的子组件,例如Nav.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | < template > < div > < ul > < li v-for="menu in menu_list">< a :href="menu.link">{{ menu.name }}</ a ></ li > < li > < span >所在地:</ span >< select name="" id=""> < option value="">北京</ option > < option value="">上海</ option > < option value="">深圳</ option > </ select > </ li > </ ul > </ div > </ template > < script > export default { name: "Nav", data() { return { menu_list: [ {name: "百度", "link": "http://www.baidu.com"}, {name: "腾讯", "link": "http://www.qq.com"}, {name: "小米", "link": "http://www.xiaomi.com"}, ], city:"北京", } }, } </ script > < style scoped> ul, li { list-style: none; padding: 0; margin: 0; } ul::after { overflow: hidden; clear: both; display: block; content: ""; } li { float: left; margin: 0 20px; } a { text-decoration: none; color: #666; } </ style > |
接下来就可以在Home.vue中通过import导入Nav进行嵌套使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | < template > < div class="home"> <!-- <img alt="Vue logo" src="../assets/logo.png">--> <!-- <HelloWorld msg="Welcome to Your Vue.js App"/>--> < Nav ></ Nav > </ div > </ template > < script > // @ is an alias to /src import Nav from '@/components/Nav.vue' export default { name: 'Home', components: { Nav } } </ script > |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现