zoukankan      html  css  js  c++  java
  • 在Html中使用Requirejs进行模块化开发

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

  • 相关阅读:
    hexo在git上搭建个人博客
    C++中的const
    C++ 面试 (1) 指针
    struct 大小计算
    php多路复用(多线程)socket相关应用
    centos6.5 redis应用环境搭建
    WebSocket的Cookie问题(转)
    java 获取参数泛型类型
    php编写TCP服务端和客户端程序
    phpize的作用(资料整理)
  • 原文地址:https://www.cnblogs.com/xing901022/p/5392438.html
Copyright © 2011-2022 走看看