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 相关文章推荐
jQuery AJAX 调用WebService实现代码
Mar 24 Javascript
javascript使用正则获取url上的某个参数
Sep 04 Javascript
bootstrap table 服务器端分页例子分享
Feb 10 Javascript
常用的JavaScript模板引擎介绍
Feb 28 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
May 09 Javascript
javascript 数据存储的常用函数总结
Jun 01 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
ES6基础之解构赋值(destructuring assignment)
Feb 21 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
layui 上传图片 返回图片地址的方法
Sep 26 Javascript
手把手教你如何编译打包video.js
Dec 09 Javascript
canvas多重阴影发光效果实现
Apr 20 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/07/17 PHP
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
微信支付开发发货通知实例
2016/07/12 PHP
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
Vue实现一个图片懒加载插件
2019/03/11 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
python实现用户登录系统
2016/05/21 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
python带参数打包exe及调用方式
2019/12/21 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
python打包多类型文件的操作方法
2020/09/21 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
信息专业个人的自我评价
2013/12/27 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
索赔员岗位职责
2015/02/15 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
六五普法心得体会2016
2016/01/21 职场文书
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL