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 相关文章推荐
js写的方法实现上传图片之后查看大图
Mar 05 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
Javascript中的Callback方法浅析
Mar 15 Javascript
javascript实现网站加入收藏功能
Dec 16 Javascript
jQuery动画效果图片轮播特效
Jan 12 Javascript
js和jquery实现监听键盘事件示例代码
Jun 24 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
Dec 06 Javascript
详解easyui基于 layui.laydate日期扩展组件
Jul 18 Javascript
vue webpack重写cookie路径的方法
Jul 10 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函数file_get_contents超时处理的方法详解
2013/06/03 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
jquery原理以及学习技巧介绍
2015/11/11 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
Python yield使用方法示例
2013/12/04 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
Python如何读取、写入JSON数据
2020/07/28 Python
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
Java语言的优势
2015/01/10 面试题
预备党员思想汇报
2014/01/08 职场文书
法学专业自我鉴定
2014/02/05 职场文书
《童年》教学反思
2014/02/18 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
python 下载文件的几种方式分享
2021/04/07 Python
alibaba seata服务端具体实现
2022/02/24 Java/Android
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python