require.js 加载 vue组件 r.js 合并压缩的实例


Posted in Javascript onOctober 14, 2016

准备:

vue.js 原本是学习vue组件

require.js 然后想到用require 加载

r.js 文件太多 合并

文件目录

忽略部分文件及文件夹

require.js 加载 vue组件 r.js 合并压缩的实例

一、先说vue 组件

先引入vue 再引入vue组件

Vue.extend({}) 定义组件 template data methods

Vue.component(),注册组件的标签,标签在html中是一个挂载点

new Vue() 进行实例化

index.html

// css引入 略
<div id="header">
<tq-header></tq-header>
</div>
<div id="footer">
<tq-footer></tq-footer>
</div>
<script src="lib/vue.js"></script>
<script src="/vue-module/tq-header.js"></script>
<script src="/vue-module/tq-footer.js"></script>

tq-header.js

//数据
var data = {
list: [{
name: "首页",
url: "./index.html",
}, {
name: "博客",
url: "http://taoquns.com"
}, {
name: "微博",
url: "http://weibo.com/1654438844/profile?topnav=1&wvr=6"
}, {
name: "简书",
url: "http://www.jianshu.com/users/633b8f612f8e/latest_articles"
}, {
name: "作品展示",
url: "http://taoquns.com/mypage"
}],
};
//定义组件 模板 数据 方法
var header = Vue.extend({
template: '<div class="header">\
<div class="header-main">\
<ul>\
<li v-for="i in list">\
<a v-bind:href="i.url">\
{{i.name}}\
</a>\
</li>\
</ul>\
</div>\
</div>',
data: function() {
return data;
},
methods: {
show: function() {
}
},
});
// 注册组件标签 <tq-header> 绑定组件 
Vue.component('tq-header', header);
//实例化
new Vue({
el: '#header'
});
tq-footer.js
// 定义组件内容,数据,方法
var footer = Vue.extend({
//模板
template: '<div class="footer">test footer test footer</div>',
//数据
data: function() {
return {
name: 'test name'
}
},
//方法
methods: {
show: function() {
alert(this.name);
}
}
});
// 注册组件的标签 <tq-footer> 绑定组件
Vue.component('tq-footer', footer);
//实例化
new Vue({
el: '#footer',
});
//vue组件结束

require.js 加载 vue组件 r.js 合并压缩的实例

二、使用require 加载 vue 组件

引入require.js

data-main 制定主模块,负责引入哪些文件

子组件 需要用 define()函数包裹 见例子

将vue 和vue组件的引入注释掉,引入require.js data-main 指定主模块文件 js文件夹下的 script.js

<script src="lib/require.js" data-main="js/script.js"></script>
<!-- 注释 -->
<!-- <script src="./lib/vue.js"></script> -->
<!-- <script src="./vue-module/tq-header.js"></script> -->
<!-- <script src="./vue-module/tq-footer.js"></script> -->
<!-- <script src="vue-module/tq-img-view.js"></script> -->

配置script.js文件 看阮一峰的require.js

baseUrl 默认路径 基目录

shim 非AMD规范的文件

paths 制定各个模块的加载路径

script.js

require.config({
baseUrl:'lib',
shim:{
'vue':{
exports:'vue'
}
},
paths:{
'vue':'../lib/vue',
'header':'../vue-module/tq-header',
'footer':'../vue-module/tq-footer'
},
});
require(['vue','header','footer'],function(vue,header,footer){
});

这样主模块就会先引入vue ,在陆续引入vue组件文件

vue 组件用define() 包裹

由于子组件依赖vue,所以需要写好依赖,并将参数Vue传进去 如:

// 函数参数Vue 大写的V哦
// 这样内部的调用Vue.extend() 等方法就可以正常使用了
define(['vue'],function(Vue){
Vue.exxtend({...});
Vue.component(.....);
new Vue({....});
});

tq-header.js 和之前差不多就是加了define()

// 头部 header
//require define 函数 start
define(['vue'], function(Vue) {
//数据
var data = {
list: [{
name: "首页",
url: "./index.html",
}, {
name: "博客",
url: "http://taoquns.com"
}, {
name: "微博",
url: "http://weibo.com/1654438844/profile?topnav=1&wvr=6"
}, {
name: "简书",
url: "http://www.jianshu.com/users/633b8f612f8e/latest_articles"
}, {
name: "作品展示",
url: "http://taoquns.com/mypage"
}],
};
//定义组件 模板 数据 方法
var header = Vue.extend({
template: '<div class="header">\
<div class="header-main">\
<ul>\
<li v-for="i in list">\
<a v-bind:href="i.url">\
{{i.name}}\
</a>\
</li>\
</ul>\
</div>\
</div>',
data: function() {
return data;
},
methods: {
show: function() {
}
},
});
// 注册组件标签 <tq-header> 绑定组件
Vue.component('tq-header', header);
//实例化
new Vue({
el: '#header'
});
});
//require define 函数 end
tq-footer.js
// 尾部 footer 
// require.js define() 函数包裹
define(['vue'], function(Vue) {
//vue 组件
/*
* template html模板文件
* data 数据 返回函数中返回对象
* methods 方法集合
*/
// 定义组件内容,数据,方法
var footer = Vue.extend({
template: '<div class="footer">\
<div class="footer-main">\
<p>taoqun个人博客 | 记录 | 展示 | 使用vue\
<a href="mailto:taoquns@foxmail.com">联系我:email</a>\
</p>\
</div>\
</div>',
data: function() {
return {
name: 'function'
}
},
methods: {
show: function() {
alert(this.name);
}
}
});
// 注册组件的标签 <tq-footer> 绑定组件
Vue.component('tq-footer', footer);
//实例化
new Vue({
el: '#footer',
});
//vue组件结束
});
//define end

require 方法 预览成功

require.js 加载 vue组件 r.js 合并压缩的实例

三、r.js 合并压缩

使用require 的方式 会加载很多的js文件,我们都知道这样会产生对服务器的多次请求,优化性能第一就是减少http请求次数

require.js 加载 vue组件 r.js 合并压缩的实例

简单的说下r.js

r.js是requireJS的优化(Optimizer)工具,可以实现前端文件的压缩与合并,在requireJS异步按需加载的基础上进一步提供前端优化,减小前端文件大小、减少对服务器的文件请求。

就是写一个配置文件,将页面需要的js组件文件合并到一个,然后require.js 直接引用合并压缩后的文件就可以了,只需要加载一个文件。

准备

r.js 下载一个r.js文件放到目录中

node.js 本地需要安装node.js

require.js 加载 vue组件 r.js 合并压缩的实例

这里我们将r.js 放到js文件中,建立一个build.js 配置文件

然后说下build.js 的配置

build.js

({
baseUrl:'../vue-module/',
paths:{
'header':'tq-header',
'footer':'tq-footer',
'imgview':'tq-img-view',
'vue':'../lib/vue',
},
name:'script',
out:'main.js'
})

我这里比较简单

baseUrl 设置基目录

paths 模块的引用

name 主模块的引用

out 输入位置

然后控制台 定位到r.js目录下 node r.js -o build.js 命令进行合并压缩,当目录下出现main.js 文件时,表示成功了。

require.js 加载 vue组件 r.js 合并压缩的实例

然后将 index.html 中 data-main 原来的script.js改成 main.js 打开就好了

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

以上所述是小编给大家介绍的require.js 加载 vue组件 r.js 合并压缩的实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
google地图的路线实现代码
Aug 20 Javascript
ajax不执行success回调而是执行了error回调
Dec 10 Javascript
JS中Date日期函数中的参数使用介绍
Jan 02 Javascript
js动态改变select选择变更option的index值示例
Jul 10 Javascript
js字符串完全替换函数分享
Dec 03 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
May 03 Javascript
js实现微信分享代码
Oct 11 Javascript
微信小程序 SocketIO 实例讲解
Oct 13 Javascript
基于Bootstrap实现城市三级联动
Nov 23 Javascript
Vue 页面跳转不用router-link的实现代码
Apr 12 Javascript
react组件基本用法示例小结
Apr 27 Javascript
js实现飞机大战游戏
Aug 26 Javascript
浅析JS中对函数function的理解(基础篇)
Oct 14 #Javascript
js插件Jcrop自定义截取图片功能
Oct 14 #Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
Oct 14 #Javascript
Js动态设置rem来实现移动端字体的自适应代码
Oct 14 #Javascript
JS动态计算移动端rem的解决方案
Oct 14 #Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 #Javascript
jQuery web 组件 后台日历价格、库存设置的代码
Oct 14 #Javascript
You might like
根德YB400的电路分析
2021/03/02 无线电
在IIS上安装PHP4.0正式版
2006/10/09 PHP
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
JavaScript对JSON数组简单排序操作示例
2019/01/31 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
创业计划书撰写原则
2014/01/25 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
超市工作总结范文2014
2014/12/19 职场文书
2015年清明节活动总结
2015/02/09 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python