您现在的位置是:网站首页>软件开发>开发终端>uni-appuni-app
uni-app规范开发(10)Vue 单文件组件 (SFC) 规范
风口下的猪2020-08-26【uni-app】
简介
.vue
文件是一个自定义的文件类型,用类 HTML 语法描述一个 Vue 组件。每个 .vue
文件包含三种类型的顶级语言块 <template>
、<script>
和 <style>
,还允许添加可选的自定义块:
<template>
<div class="example">{{ msg }}</div>
</template>
<script>
export default {
data () {
return {
msg: 'Hello world!'
}
}
}
</script>
<style>
.example {
color: red;
}
</style>
<custom1>
This could be e.g. documentation for the component.
</custom1>
vue-loader
会解析文件,提取每个语言块,如有必要会通过其它 loader 处理,最后将他们组装成一个 ES Module,它的默认导出是一个 Vue.js 组件选项的对象。
vue-loader
支持使用非默认语言,比如 CSS 预处理器,预编译的 HTML 模版语言,通过设置语言块的 lang
属性。例如,你可以像下面这样使用 Sass 语法编写样式:
<style lang="sass">
/* write Sass! */
</style>
更多细节可以在使用预处理器中找到。
#语言块
#模板
每个
.vue
文件最多包含一个<template>
块。内容将被提取并传递给
vue-template-compiler
为字符串,预处理为 JavaScript 渲染函数,并最终注入到从<script>
导出的组件中。
#脚本
每个
.vue
文件最多包含一个<script>
块。这个脚本会作为一个 ES Module 来执行。
它的默认导出应该是一个 Vue.js 的组件选项对象。也可以导出由
Vue.extend()
创建的扩展对象,但是普通对象是更好的选择。任何匹配
.js
文件 (或通过它的lang
特性指定的扩展名) 的 webpack 规则都将会运用到这个<script>
块的内容中。
#样式
默认匹配:
/\.css$/
。一个
.vue
文件可以包含多个<style>
标签。<style>
标签可以有scoped
或者module
属性 (查看 scoped CSS和 CSS Modules) 以帮助你将样式封装到当前组件。具有不同封装模式的多个<style>
标签可以在同一个组件中混合使用。任何匹配
.css
文件 (或通过它的lang
特性指定的扩展名) 的 webpack 规则都将会运用到这个<style>
块的内容中。
#自定义块
可以在 .vue
文件中添加额外的自定义块来实现项目的特定需求,例如 <docs>
块。vue-loader
将会使用标签名来查找对应的 webpack loader 来应用在对应的块上。webpack loader 需要在 vue-loader
的选项 loaders
中指定。
更多细节,查看自定义块。
#Src 导入
如果喜欢把 .vue
文件分隔到多个文件中,你可以通过 src
属性导入外部文件:
<template src="./template.html"></template>
<style src="./style.css"></style>
<script src="./script.js"></script>
需要注意的是 src
导入遵循和 webpack 模块请求相同的路径解析规则,这意味着:
- 相对路径需要以
./
开始 - 你可以从 NPM 依赖中导入资源:
<!-- import a file from the installed "todomvc-app-css" npm package -->
<style src="todomvc-app-css/index.css">
在自定义块上同样支持 src
导入,例如:
<unit-test src="./unit-test.js">
</unit-test>
#语法高亮 / IDE 支持
目前有下列 IDE/编辑器 支持语法高亮:
- Sublime Text
- VS Code
- Atom
- Vim
- Emacs
- Brackets
- JetBrains IDEs (WebStorm、PhpStorm 等)
非常感谢其他编辑器/IDE 所做的贡献!如果在 Vue 组件中没有使用任何预处理器,你可以把 .vue
文件当作 HTML 对待。
#注释
在语言块中使用该语言块对应的注释语法 (HTML、CSS、JavaScript、Jade 等)。顶层注释使用 HTML 注释语法:<!-- comment contents here -->
。
很赞哦! (0)
相关阅读 (同一栏目)
- uni-app发行(打包)h5,访问为白屏
- v-for使用报错:Cannot use v-for on stateful component root element because it renders multiple elements.
- 组件中不通过$emit改父组件数据,报错
- $emit传递多个参数
- 通过html5+扩展titleNView定义autoBackButton,autoBackButton在h5失效的问题
- 交互反馈uni.showModel()中success用箭头函数的问题
- 页面首次加载时,popup弹出层失效问题
- 使用uni-nav-bar左右两个图标宽度不同的问题
- 自定义组件uni-nav-bar插槽问题
- 解决 img mode="widthFix" 高度闪烁问题
- 多层使用组件,每层都要注册的问题
- scroll-view上拉加载失效问题
- Hbuilder智能感知引入同目录组件,路径出错问题
- swiper轮播图片右侧空白问题
- 可拖拽顶部tab组件,设置padding时,只需在下部uni-tab-bar中scroll-view里的view
- 渐变透明的导航栏设计
- watch数据监听
- 微信小程序swiper-item设置style引起图片不显示问题(ios端)
- uni-app开发微信小程序时page.json如何设置每个页面的Style(状态栏、导航条、标题、窗口背景色等)
- uniapp运行到app端出现空白的问题
- uni-app路由跳转及参数的传参和接收
- 在获取异步函数(uniapp中的uni.request等)返回结果,用renturn报undefined
- ios时间格式为2020-02-02使用new Data()转化为时间戳的问题
- better-scroll使用时报错
- better-scroll在项目中涉及到v-if控制显示切换时,滑动失效
- uni-app导航栏和状态栏配置
- APP端js类方法及属性间相互调用,this的指向问题
- uniapp app端调试
- uniapp 页面栈管理
- uni-app规范开发(1)设置配置文件
- uniapp规范开发(2)封装请求接口
- uniapp规范开发(3)命名规范
- uniapp规范开发(4)结构化规范
- uniapp规范开发(5)注释规范
- uniapp规范开发(8)使用过滤器filter
- uniapp规范开发(6)编码规范
- uniapp规范开发(7)指令规范
- uni-app规范开发(10)Vue 单文件组件 (SFC) 规范
- uni-app规范开发(9)使用公共组件利用slot
- vue挂载全局方法和组件(uni-app中)
- bscroll左右联动
- uni-app规范开发(11)加载数据后渲染
- HbuilderX运行npm
- [BScroll warn]: Can not resolve the wrapper DOM. Vue better-scroll
- 含bscroll页面重复渲染引起页面中点击事件执行多次
- bscroll购物车面板打开关闭后,bacroll不再可滑动的解决方案
- [BScroll warn]: Can not resolve the wrapper DOM. Vue better-scroll
- renderjs的概述及作用
- renderjs模式下,视图层与逻辑层的通信及调用
- renderjs模块获取逻辑层的数据
- 子组件需要自有数据时,不要用data申明数据+方法里用this定义数据
- QQ小程序打开指定QQ群
- eqqwe
- 前端使用uni.uploadFile发生表单数据时,后端通过$_POST/param()等方法都获取不到
- render模块下,视图层js(render.js)调用逻辑层js
- Uniapp 实现 与 外部 HTML 页面通信
- 非页面js使用uni.navigateTo()进行跳转
- 新增和编辑页面中,数据带图片的问题
- 前后端开发时,数组遍历的偏重使用
- uniapp h5页面刷新出现404或者空白的解决方法
- JDK或JRE生成安卓APP证书
- uni-app HBuilder X 云打包:证书文件不是有效地keystore文件
- 软件版本更新的一些梳理
- uniapp wgt安装失败的原因
- plus.install安装失败的解决方案
- 源生组件的z-index问题
- 组件通过qq.createSelectorQuery().select()不能获取到自己板块的id,但是能获取到父主页面的id
- 微信/QQ小程序网络图片-canvas时不显示的问题
- 小程序将网络图片转为base64
- uniapp 安卓端保存base64到相册
栏目目录
标签云
站点信息
- 文章统计:528篇
- 移动端访问:扫码进入SQ3R
