Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用grunt.js使用RequireJS组合JavaScript文件的工作项目结构?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些项目,使用 RequireJS在浏览器中加载单个JavaScript模块,但我还没有优化它们。在开发和生产中,应用程序对每个JavaScript文件单独发出请求,现在我想使用 Grunt解决这个问题。

我试图把一个简单的项目结构放在一起没有用,所以我想知道,如果有人可以为我提供一个工作榜样。我的目标如下:

>在开发模式下,通过为每个所需模块发出单独的请求,一切都在浏览器中工作。在开发模式下不需要grunt任务或级联。
>当我准备好了,我可以运行一个grunt任务来优化(组合)所有的JavaScript文件使用r.js在本地测试。一旦我确信优化的应用程序运行正常,我可以部署它。

这里是一个示例结构为了这个对话:

grunt-requirejs-example/
  grunt.js
  main.js (application entry point)
  index.html (references main.js)
  lib/ (stuff that main.js depends on)
    a.js
    b.js
    requirejs/
      require.js
      text.js
  build/ (optimized app goes herE)
  node_modules/ (necessary grunt tasks live herE)

具体来说,我正在寻找一个可以从头开始的工作项目结构。我的主要问题是:

>如果这个项目结构有缺陷,你推荐什么?
>什么确切需要在我的grunt.js文件,特别是让r.js优化器工作?
>如果所有这些都不值得工作,有一种方法使用grunt watch任务在开发模式下自动构建每一次我保存一个文件,然后我都耳朵。我想避免任何减慢循环从改变到在浏览器中看到它。

解决方法

我使用 grunt-contrib-requirejs任务来构建基于require.js的项目。在项目目录中安装它:

npm install grunt-contrib-requirejs --save-dev

BTW:–save-dev将包添加你的package.json中的开发依赖项。如果你不在你的项目中使用package.json,请忽略它。

在grunt文件中加载任务:

grunt.loadNpmTasks('grunt-contrib-requirejs');

并将配置添加到您的grunt.initConfig

requirejs: {
  production: {
    options: {
      baseUrl: "path/to/base",mainConfigFile: "path/to/config.js",out: "path/to/optimized.js"
    }
  }
}

现在你可以构建你的require.js的东西到一个单一的文件,将通过运行grunt requirejs uglifyjs最小化

您可以将一组不同的任务捆绑到某种主要任务,将其添加到您的grunt文件

grunt.registerTask('default',['lint','requirejs']);

有了这个,你可以简单地输入grunt和grunt会自动运行带有两个’子任务’的认任务:lint和requirejs。

如果你需要一个特殊的生产任务:定义它像上面

grunt.registerTask('production','requirejs','less','copy']);

并运行它

grunt production

如果你需要不同的’生产’和’开发’行为,即requirejs任务,你可以使用所谓的目标。在上面的配置示例中,它已经定义为生产。如果需要,您可以添加一个目标(BTW,您可以通过在同一级别上添加一个选项对象为所有目标定义一个全局配置)

requirejs: {
  // global config
  options: {
    baseUrl: "path/to/base",mainConfigFile: "path/to/config.js"
  },production: {
    // overwrites the default config above
    options: {
      out: "path/to/production.js"
    }
  },development: {
    // overwrites the default config above
    options: {
      out: "path/to/development.js",optimize: none // no minification
    }
  }
}

现在你可以同时使用grunt requirejs或者单独使用grunt requirejs:production来运行它们,或者你可以在不同的任务中定义它们:

grunt.registerTask('production','requirejs:production']);
grunt.registerTask('development','requirejs:development']);

现在回答你的问题:

>我肯定会在你的项目中使用一个文件夹。在我的情况下,我使用一个’src’文件夹进行开发,构建到一个’htdocs’文件夹进行生产。项目布局我预计是:

project/
  src/
    js/
      libs/
        jquery.js
        ...
      appname/
        a.js
        b.js
        ...
      main.js // require.js starter
    index.html
    ...
  build/
    ... //some tmp folder for the build process
  htdocs/
    ... // production build
  node_modules/
    ...
  .gitignore
  grunt.js
  package.json

>见上文
>你可以这样做,但我不建议添加requirejs到watch任务,这是一个资源饥饿的任务,它会减慢你的机器显着。

最后但并非最不重要:使用r.js玩时要格外小心。特别是当你想使用r.js优化整个项目时,通过添加@L_258_5@modules指令到你的配置。 R.js将删除输出目录而不询问。如果发生意外配置它是你的系统根目录,r.js将会清除你的硬盘。警告,我删除了我的整个htdocs文件夹永久前一段时间,同时设置我的grunt任务…总是添加keepBuildDir:true,当玩弄r.js配置。

大佬总结

以上是大佬教程为你收集整理的使用grunt.js使用RequireJS组合JavaScript文件的工作项目结构?全部内容,希望文章能够帮你解决使用grunt.js使用RequireJS组合JavaScript文件的工作项目结构?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。