簡體   English   中英

使用requirejs並嘗試將javascript優化為供應商文件和應用程序文件

[英]Using requirejs and trying to optimize javascript into a vendor file and an app file

我正在使用requirejs進行項目,並且正在嘗試將JavaScript優化為兩個文件:供應商庫和應用程序代碼。 不幸的是,我似乎無法使其正常工作。

資料夾結構:

  • backbone_components /
  • 應用程序/
    • 減/
    • JS /
      • COMPONENT1 /
      • COMPONENT2 /
      • 布局/
        • 儀表板/
        • 關於/
      • LIB /
      • config.js
      • main.js
    • 的index.html
  • DIST /
  • Gruntfile.js

config.js:

require.config({
  baseUrl: '../js/',
  paths: {
    jquery:     '../../bower_components/jquery/dist/jquery',
    underscore: '../../bower_components/lodash/dist/lodash',
    backbone:   '../../bower_components/backbone/backbone',
    text:       '../../bower_components/requirejs-text/text'
  },
  enforeceDefine: true
});

define(['backbone', 'main'], function(Backbone, app) {
});

Gruntfile.js:

requirejs: {
  options: {
    dir: 'dist/js/',
    mainConfigFile: 'app/js/config.js',
    optimize: 'none', 
    normalizeDirDefines: 'all',
    skipDirOptimize: true
  },
  dist: {
    options: {
      modules: [
        {
          name: 'vendor',
          include: ['jquery', 'underscore', 'backbone', 'text'],
        },
        {
          name: 'app',
          exclude: ['vendor']
        }
      ]
    }
  }
});

當我運行grunt ,出現以下錯誤:“錯誤:錯誤:錯誤:模塊路徑不存在:/path/to/project/app/js/app/js/vendor.js對於名為:供應商的模塊。”

為什么它不存在時會尋找“供應商”?

我認為您要優化的源代碼中沒有名為vendor模塊。 如果這是正確的,那么您得到的錯誤是因為r.js 正在尋找一個名為vendor的模塊。 您必須告訴它使用create選項創建它:

modules: [
    {
      name: 'vendor',
      create: true,            // <--- Add this option!
      include: ['jquery', 'underscore', 'backbone', 'text']
    },
    {
      name: 'app',
      exclude: ['vendor']
    }
]

如果沒有該選項, r.js理解為您實際上是在說“采用vendor模塊並包括jquery等”。 使用該選項,就告訴它從頭開始創建vendor

create選項記錄在此文件中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM