如何使用requirejs加载html

如何使用requirejs加载html,第1张

在前端模块化的时候,不仅仅是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()方法后面,重新绑定下事件。

假如真的要实现你的想法,其实是可以实现的。

如1楼的朋友所讲,用JS。

不过你自己来写这些JS,估计工作量是十分巨大的。效率也不高。

你可以试试学习一下JS的框架。例如EXT,JQUERY这些比较成熟的JS框架。

EXT是一个十分庞大严密的JS狂架,花时间去学也要很长的时间。

JQUERY是链式的,比较容易上手。

正如你所要求的,其实可以通过JS+ASP/PHP/.net/jsp等的交互来实现。

因为JS出于安全考虑是不支持读取文本文件的。所以必须通过其他脚本语言来实现。

虽然看上去是所有内容都是HTML,实际上却是通过动态脚本语言来异步实现的。

这个方面的内容,你可以去研究一下AJAX技术。相信可以解决你的问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7587603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存