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类(纯JS, Ajax模式)
Mar 12 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
Oct 23 Javascript
使用jquery获取网页中图片高度的两种方法
Sep 26 Javascript
Extjs表单常见验证小结
Mar 07 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
js实现图片上传并正常显示
Dec 19 Javascript
AngularJS向后端ASP.NET API控制器上传文件
Feb 03 Javascript
详解JavaScript的另类写法
Apr 11 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
Jun 26 Javascript
AngularJS 异步解决实现方法
Jun 12 Javascript
vue的过滤器filter实例详解
Sep 17 Javascript
vue设置默认首页的操作
Aug 12 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安全防范技巧分享
2011/11/03 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
javascript 一些用法小结
2009/09/11 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
python实现xlsx文件分析详解
2018/01/02 Python
python绘制随机网络图形示例
2019/11/21 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
深入了解python列表(LIST)
2020/06/08 Python
python else语句在循环中的运用详解
2020/07/06 Python
python 进程池pool使用详解
2020/10/15 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
卫校护理专业毕业生求职信
2013/11/26 职场文书
小学教师寄语大全
2014/04/03 职场文书
国富论读书笔记
2015/06/26 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
《实心球》教学反思
2016/02/23 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android