利用requirejs异步调用js文件的例子

前用 requirejs和r.js  也做过打包demo,

demo 大家懂得,1个页面10多个js。。。。。。。。

这次计划给公司的项目打包

因为一般情况下,大部分项目都是多页面很少有项目是单页面应用程序

而 r.js 默认打包支持两种情况

1 所有js文件打包到1个文件

2 在1的基础上可以给js按照模块分组,支持多个模块在1个js文件中

  BUT 都是最终归结为1个js文件。。。。。。

但是这不是我想要的,我就想要一个页面相关的js打包成一个js文件包,每个页面都有自己的js文件包

方法很简单 基于grunt+grunt-contrib-requirejs

 代码如下 复制代码

// r.js 打包 准备
var files = grunt.file.expand('js/app/*/main.js'); //读取要打包的js入口 一般都为 main的js
var requirejsOptions = {}; //用来存储 打包配置的对象
 
//遍历文件
files.forEach(function(file) {
    var filenamelist = file.split('/');
    var num = filenamelist.length;
    var filename = filenamelist[num - 2]; //获取目录名称,因为这里的文件名都是main的js
    requirejsOptions[filename] = {
        options: {
            baseUrl: "js/",
            paths: {
                "text": 'lib/text',
                "jquery": 'lib/jquery',
                "backbone": 'lib/backbone',
                "underscore": 'lib/underscore',
                "Highcharts": 'lib/highcharts/highcharts',
                "select2": 'lib/select2/select2',
                "moment": 'lib/moment',
                "jquery-ui": 'lib/jquery-ui/jquery-ui',
                "jquery.cookie": 'lib/jquery.cookie',
                "validate": 'lib/jquery.validate',
                "metadata": 'lib/jquery.metadata',
                "jsplumb": "lib/jquery.jsPlumb",
                "qtip": 'lib/qtip/jquery.qtip',
                "nicescroll": "lib/jquery.nicescroll",
                "Htheme": 'lib/highcharts/theme',
                'jquery.mousewheel': 'lib/jquery.mousewheel'
            },
            optimizeAllPluginResources: true,
            name: 'app/' + filename + '/main',
            out: 'js/appbuild/' + filename + '/main.js'
        }
    };
});
//

通过观察我们可以发现,配置和r.js 的build.js 是一致的,然后按照文件名存贮到对象中,

对与和grunt的配置则简单多了

 代码如下 复制代码

//*****省略其他代码
        requirejs: requirejsOptions
 
 
    });
    // Default task(s).
    grunt.registerTask('dev', [
        'compass:force',
        'connect:server',
        'watch'
    ]);
    grunt.registerTask('dist', [
        'compass:force'
    ]);
    grunt.registerTask('js', ['requirejs']);

观察每个打包后的js文件,发现根据依赖打包,果然强悍,做到了每个页面js的插件数量刚好满足这个页面的需求,做到每个页面的代码都是最少的,可见多对多打包还是挺不错的

时间: 2024-10-05 12:38:05

利用requirejs异步调用js文件的例子的相关文章

ThinkPHP里用U方法调用js文件实例

  本文实例讲述了ThinkPHP里用U方法调用js文件的方法.分享给大家供大家参考.具体如下: 在TP里提供了在模板文件中直接调用函数的快捷方法.U是其中之一.手册里有它的用法: 代码如下: {:U('User/insert' )} 先把js文件的后缀改成html(这个不会影响),然后写个JsAction,在里面进行调用: ? 1 2 3 4 5 6 7 8 9 <?php class JsAction extends Action{ function nav() { $this->disp

在html中调用js文件(无路径错误和书写错误),但js中的函数无法执行

问题描述 在html中调用js文件(无路径错误和书写错误),但js中的函数无法执行 我在html中调用js文件 这个文件中有5个函数,其中有一个函数已经可以用了,但是这个文件中的另外两个函数在调用的时候却没有反映,具体代码如下html代码 <form name=""form_dx"" action=""#"" method=""post"" onSubmit=""

markdown调用js文件问题

问题描述 markdown调用js文件问题 用Echarts绘制了图表,形成了js文件,现在想在markdown中调用这个js文件,想让这 幅图在markdown撰写的报告中显示出来,请问怎么才能现实呢?谢谢啦 解决方案 浅谈jsp页面中调用js文件的中文乱码问题jsp包含js文件时乱码问题关于IE6下JS文件不能正常调用的问题

怎么调用Js文件里的音乐链接传递到播放器页并播放?

问题描述 我在网上下载的播放器源码,镶嵌在网页顶部,又在左框架做了个歌曲列表,可是我不知道怎样可以调用JS文件里的链接传递到播放器并播放!说实在的本人十分菜,做了一半了几乎全是依赖软件,请求高手帮助!我把源码存进网盘了麻烦高手下载了帮我看看,十分感谢!

ThinkPHP里用U方法调用js文件实例_php实例

本文实例讲述了ThinkPHP里用U方法调用js文件的方法.分享给大家供大家参考.具体如下: 在TP里提供了在模板文件中直接调用函数的快捷方法.U是其中之一.手册里有它的用法: 复制代码 代码如下: {:U('User/insert' )} 先把js文件的后缀改成html(这个不会影响),然后写个JsAction,在里面进行调用: <?php class JsAction extends Action{ function nav() { $this->display('Index:js:nav

ajax中如何重新调用JS文件,SOS!

问题描述 前台页面<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Index.aspx.cs"Inherits="Maticsoft.Web.Admin.WSNC_Sensor.Index"ContentType="text/html"ResponseEncoding="gb2312"%><%@Register

根据条件(后台处理)调用JS文件

问题描述 请问下如何在后台根据条件来调用JS文件下面是我的一个diaoyong.js文件源码这个是个动态提示信息的小窗口,我把他弄成个JS文件了,我的后台要根据条件判断来调用这个JS文件,如何处理呢?比如:protectedvoidbtnAdd_Click(objectsender,EventArgse){if(条件=符合){执行调用diaoyong.js,或者能调用JS文件里面的varMSG1=newCLASS_MSN_MESSAGE("aa",220,120,"告警信息提

php调用js文件的好办法

<HTML><HEAD><TITLE> php调用js文件的好办法</TITLE></HEAD><BODY><scrīpt language=''javascrīpt'' type=''text/javascrīpt'' src=''test.php''></scrīpt><scrīpt>ok("aaaaaa!");</scrīpt></BODY><

js 里面调用js文件

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-