在Html中使用Requirejs进行模块化开发实例详解


Posted in Javascript onApril 15, 2016

在前端模块化的时候,不仅仅是js需要进行模块化管理,html有时候也需要模块化管理。这里就介绍下如何通过requirejs,实现html代码的模块化开发。

如何使用requirejs加载html

Reuqirejs有一个text的插件,它可以读取指定文件的内容,读取到的内容就是文本。

如何下载text插件

第一种方法,可以通过npm下载:

npm install requirejs/text

第二种方法,也可以直接去官方github上面直接下载。

直接拷贝内容到text.js中即可。

如何安装text插件

在requirejs的main.js中配置text插件的依赖即可,跟jquery差不多,只要保证能通过正常的加载方式加载到它就行。

requirejs.config({
baseUrl: './',
paths: {
'text':path+'/require/text',
...
},
shim: {
...
}
});

也可以直接放在baseUrl里面。

如何使用text

在目标模块中,按照下面的语法即可:

define(function(require){
var html = require("text!html/test.html");
console.log(html);
});

或者

define(["text!html/test.html"],function(html){
console.log(html);
});

如何进行html的模块化开发?

看过上面你已经会使用text了,但是仍然不知道怎么组织前端代码。

举个栗子:

博客园的网站页面会根据上方的导航跳转到不同的页面。如果是在单页面中,很容易想到原始的做法是,导航的按钮对应不同的div,点击那个按钮,就显示与之对应的div;其他的div则隐藏掉。

那么,前端的代码可能会这样:

<html>
<body>
<nav>
导航按钮1、导航按钮2、导航按钮3
</nav>
<div style="display:block">按钮1对应的页面</div>
<div style="display:none">按钮2对应的页面</div>
<div style="display:none">按钮3对应的页面</div>
</body>
</html>

这样的代码会很杂乱...而且前端Html会很长...不利于维护。

那么有了reuqirejs的text插件以后,就可以这样了:

<html>
<body>
<nav>
导航按钮1、导航按钮2、导航按钮3
</nav>
<div id="target"></div>
</body>
</html>

然后在对应的模块中:

$('#target').html(require("text!目标按钮对应的页面.html"));

这样就随性多了吧!前端代码也可以跟着模块一起有效的管理了!

不过需要注意的是:这种方式会导致Jquery绑定的事件失效——所以一定要在html()方法后面,重新绑定下事件。

关于在Html中使用Requirejs进行模块化开发的相关知识就给大家介绍这么多,希望对大家有所帮助!

Javascript 相关文章推荐
网页的标准,IMG不支持onload标签怎么办
Jun 29 Javascript
javascript倒计时功能实现代码
Jun 07 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
Dec 11 Javascript
javascript判断chrome浏览器的方法
Mar 26 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
Jun 12 Javascript
JavaScript 是什么意思
Sep 22 Javascript
vue.js表格组件开发的实例详解
Oct 12 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
Dec 07 Javascript
vue component组件使用方法详解
Jul 14 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 Javascript
Vue渲染过程浅析
Mar 14 Javascript
jQuery基于json与cookie实现购物车的方法
Apr 15 #Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 #Javascript
jQuery设置Cookie及删除Cookie实例分析
Apr 15 #Javascript
jQuery获取cookie值及删除cookie用法实例
Apr 15 #Javascript
jQuery通过写入cookie实现更换网页背景的方法
Apr 15 #Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
Apr 15 #Javascript
jQuery遍历DOM元素与节点方法详解
Apr 14 #Javascript
You might like
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
给Function做的OOP扩展
2009/05/07 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
JavaScript错误处理
2015/02/03 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
pycharm 使用心得(三)Hello world!
2014/06/05 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
Python如何在DataFrame增加数值
2020/02/14 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
Python多进程编程常用方法解析
2020/03/26 Python
python温度转换华氏温度实现代码
2020/12/06 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
一些高难度的SQL面试题
2016/11/29 面试题
公司清洁工岗位职责
2013/12/14 职场文书
公司授权委托书范文
2014/08/02 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
win10下go mod配置方式
2021/04/25 Golang
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript