Vue.js一个文件对应一个组件实践


Posted in Javascript onOctober 27, 2016

这方面官网给的示例是需要工具来编译的,但是nodejs又没有精力去学,只好曲线救国。VueJS的作者在另一个网站有一篇文章讲到可以用jQuery.getScript或RequireJS实现组件,却没有给示例,于是自己摸索出了一种方法。

用到的工具:

vue.js --- 0.12.+ (需要0.12中async component支持)
require.js
text.js --- RequireJS text plugin https://github.com/requirejs/text

文件列表

index.html
index.js
comp.js (组件在这里定义)
comp.html (组件的模板)

实际上组件分成了js和html,html是模板内容,这里似乎与“一个文件对应一个组件”稍有不符,但如果模板内容比较多,这是有必要的,也更便于维护。 直接上代码。

comp.html -- 组件模板

<h2>{{title}}</h2>
<p>{{content}}</p>
comp.js -- 组件定义
define(['text!comp.html'], function (temp) { // 在requirejs中定义一个模块,依赖为模板文本
 return {
 props: ['title', 'content'],
 template: temp
 }
});

至此,一个简单的模板就建好了。然后就是在VueJS中注册这个组件。

index.js

require.config({
 paths: { // 指定text.js和vue.js的路径,不需要.js后缀,详见RequireJS文档
 text: '../../../assets/requirejs/text',
 vue: '../../../assets/vue/vue'
 }
});

require(['vue'], function (Vue) { // 依赖vue.js
 Vue.component('comp', function (resolve) { // 注册一个异步组件
 require(['comp'], function (comp) { // 因为我们要按需加载组件,因此require(['comp'])必须在function里
 resolve(comp)
 })
 });
 new Vue({
 el: 'body'
 });

 //new Vue({
 // el: 'body',
 // components: {
 // comp: function (resolve) {
 // require(['comp'], function (comp) {
 // resolve(comp)
 // })
 // }
 // }
 //});
});

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title></title>
</head>
<body>

<component is="comp" title="我是一个组件" content="fjkldsjfkldjsklgjks"></component>

<script data-main="index" src="../../../assets/require.js"></script>

</body>
</html>

运行代码,把<component>注释掉就能看到区别。

如果组件比较多,注册组件就会很繁琐,因此可以把这部分提炼出来。

改进后的index.js

require.config({
 paths: {
 text: '../../../assets/requirejs/text',
 vue: '../../../assets/vue/vue'
 }
});

function conponent(name) {
 return function (resolve, reject) {
 require([name], function (comp) {
 resolve(comp)
 })
 }
}

require(['vue'], function (Vue) {
 Vue.component('comp', conponent('comp'));
 Vue.component('comp2', conponent('comp2'));

 new Vue({
 el: 'body'
 });
});

至此。

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
比较简单的一个符合web标准的JS调用flash方法
Nov 29 Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
Oct 29 Javascript
DOM 基本方法
Jul 18 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
Aug 17 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
详解angularjs获取元素以及angular.element()用法
Jul 25 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
Sep 10 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
Dec 24 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
Jan 09 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
Jun 01 Javascript
Ajax是什么?Ajax高级用法之Axios技术
Apr 21 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
Oct 27 #Javascript
node.js文件上传处理示例
Oct 27 #Javascript
Vue.js表单控件实践
Oct 27 #Javascript
vue实现可增删查改的成绩单
Oct 27 #Javascript
vuex实现简易计数器
Oct 27 #Javascript
微信小程序  生命周期详解
Oct 27 #Javascript
require.js+vue开发微信上传图片组件
Oct 27 #Javascript
You might like
PHP 事件机制(2)
2011/03/23 PHP
php单链表实现代码分享
2016/07/04 PHP
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
javascript Array.prototype.slice的使用示例
2013/11/14 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
2020/08/14 Javascript
Python运算符重载用法实例
2015/05/28 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
详解Python3中ceil()函数用法
2019/02/19 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
成教毕业生自我鉴定
2013/10/23 职场文书
行政总监岗位职责
2013/12/05 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
反邪教警示教育方案
2014/05/13 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript