Dojo 自定义构建由于缺少资源而出现浏览器错误

2024-01-01

我一直在努力学习基于 AMD 的 Dojo 构建系统。到目前为止,我还无法获得一个在浏览器(FF)中不会出现加载错误的情况下可用的构建。

我对如何管理构建有疑问。

我的构建配置文件有一个包部分。我在那里指定的内容似乎与写入目标目录的相同包目录直接相关。这似乎是合适的。然而,我还有一个图层部分,它试图合并来自 dojo、dijit、dojox 等的“引用”模块。当它们合并到一个 dojo.js 文件中时,我的目标目录中仍然有所有这些库目录。是否可以理解为您只需手动进入并删除它们,或者是否有一种自动方法可以在构建过程中删除它们?

在我的第一层中,我尝试为 dojo、dijit 和 dojox/app/main 构建它。这不会拉取任何资源,例如 dojo/resources/blank.gif 或同一目录中的任何 .css 文件。如何将这些资源文件复制到目的地?我相信 dojo.profile.js (它确实指示复制这些资源)只会影响 dojo 目录。但由于我正在创建一个结合了 js 模块的自定义 dojo/dijit/dojox 文件,因此没有资源目录。自定义构建之后,我是否应该手动进入 dojo 目录并将 dojo/resources 目录移出,但扔掉 dojo 目录的其余部分?只是不确定如何在构建 dojo/dijit 层时在 dojo 目录中获取可访问的依赖 img 和 css 文件,以便与自定义 dojo.js 层文件一起使用。

这是我的构建配置文件:

var profile = {
    basePath: "./",
    //releaseDir: "irb-release",
    action: "release",
    cssOptimize: "comments",
    stripConsole: 'all',
    selectorEngine: 'acme',
    layerOptimize: 'closure',
    optimize: 'closure',
    mini: true,
    packages:[
            { name: "dojo",         location: "../libs/dojo" },
            { name: "dijit",        location: "../libs/dijit" },
            { name: "dojox",        location: "../libs/dojox" },
            { name: "dgrid",        location: "../libs/dgrid" },
            { name: "put-selector", location: "../libs/put-selector" },
            { name: "xstyle",       location: "../libs/xstyle" },
            { name: "myPkg",     location: "../libs/myPkg" },
            { name: "irb",          location: "../irb" }
    ],
    layers: {
            "release/irb/libs/dojo": {
                    include: ["dojo/dojo", "dijit/dijit", "dojox/app/main"],
                    boot: true,
                    customBase: true
            },
            "release/irb/libs/myPkg": {
                    include: [
                            "myPkg/dialog/MessageBox",
                            "myPkg/grids/FilterGrid",
                            "myPkg/util/WidgetMonitor",
                            "myPkg/controllers/BorderLayout",
                            "myPkg/controllers/UnloadViewController"
                     ],
                    includeLocales: [ 'en-us' ]
            },
            "release/irb/libs/store/Memory": {
                    include: [ "dojo/store/Memory" ]
            },
            "release/irb/libs/store/Observable": {
                    include: [ "dojo/store/Observable" ]
            },
            "irb/irb": {
                    include: [
                            "irb/irb",
                            "dojox/app/View",
                            "dojox/css3/transit",
                            "dojox/app/controllers/Load",
                            "dojox/app/controllers/Transition",
                            "dojox/app/controllers/History"
                    ]
            }
    },

    staticHasFeatures: {
            // The trace & log APIs are used for debugging the loader, so we do not need them in the build.
            'dojo-trace-api': 0,
            'dojo-log-api': 0,

            // This causes normally private loader data to be exposed for debugging. In a release build, we do not need
            // that either.
            'dojo-publish-privates': 0,

            // This application is pure AMD, so get rid of the legacy loader.
            'dojo-sync-loader': 0,

            // `dojo-xhr-factory` relies on `dojo-sync-loader`, which we have removed.
            'dojo-xhr-factory': 0,

            // We are not loading tests in production, so we can get rid of some test sniffing code.
            'dojo-test-sniff': 0
    }
}; 

更新:这是我的目录结构,大约是。基于dojox/app结构:

/(webroot)
    /irb
        /controllers
        /res
            /css
            /img
        /views
        build.sh
        config.json
        index.html
        irb.js
        package.js
        package.json
        release.profile.js
    /libs
        /dgrid
        /dijit
        /dojo
        /dojox
        /myPkg
        /put-selector
        /util
        /xstyle

对于构建,我使用基于 dojox/app 示例的 build.sh 文件,但它调用的内部命令行是:

node "/home/(user)/(project ... path)/(webroot)/libs/dojo/dojo.sh" 
  load=build 
  --require "/home/(user)/(project ... path)/(webroot)/irb/irb.js" 
  --profile "/home/(user)/(project ... path)/(webroot)/irb/release.profile.js"
  --appConfigFile "/home/(user)/(project ... path)/(webroot)/irb/config.json"
  --releaseDir "/home/(user)/(project ... path)/(webroot)/build" 

额外的文件和目录

我认为不删除它们是一个很好的做法。执行构建的原因是通过将使用的所有内容组合到几个(最好是一个)javascript 文件中来提高 Web 浏览器性能。

但是如果使用的文件(模块)不包含在层中会发生什么。如果构建目录中有其他文件,应用程序仍然可以工作,您只需对服务器进行额外的调用即可获取该文件。如果您删除了这些目录和文件,您的应用程序将会崩溃。


拉动资源

完成自定义构建后,我有一个

release/RELEASE_NAME/dojo/resources 

目录,其中包含您提到的所有资源。


编辑:添加示例...

Example

Command

node path/to/dojo/dojo.js 
    load=build --profile path/to/build.profile.js --release --version=1.9.0

构建.profile.js

var profile = (function(){
    return {
        // Assuming that the node command is being run in 
        // the webroot directory.  If not, update the basePath
        // to the libs directory using the current directory as
        // the starting point.
        basePath:        "./libs",

        releaseDir:      "/path/to/release/dir",
        action:          "release",
        releaseName:     "release",
        layerOptimize:   "shrinksafe",
        optimize:        false,
        cssOptimize:     "comments",
        mini:            false,
        stripConsole:    "normal",
        selectorEngine:  "acme",

        packages:[
            {name: 'dojo', location: 'dojo'},
            {name: 'dijit', location: 'dijit'},
            {name: 'dojox', location: 'dojox'},
            {name: 'dgrid', location: 'dgrid'},
            {name: 'put-selector', location: 'put-selector'},
            {name: 'xstyle', location: 'xstyle'}
            {name: 'irb', location: '../irb'},
        ],
        layers: {
            'irb/dojo": {
                include: ["dojo/dojo", "dijit/dijit", "dojox/app/main"],
                boot: true,
                customBase: true
            },
            ...
        }
    };
})();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dojo 自定义构建由于缺少资源而出现浏览器错误 的相关文章

  • ant命令不生成apk文件

    我正在使用 Ant 构建我的应用程序 我的应用程序使用库项目 所以首先我在命令行中运行以下命令以在我的项目中生成 build xml 安卓更新 项目 target 5 p 我的项目路径 l 我的库项目路径 我的应用程序的构建目标是 4 0
  • Android Studio:编译器发生异常(1.8.0_242-release)

    运行应用程序时 无法完成编译 继续抛出错误 我安装了jdk并添加了java home路径 但仍然出现此错误 另外 当我写 flutter doctor v 时我没有任何问题 请通过 Java 错误报告页面 http bugreport ja
  • 外部 VS2013 构建错误“错误 MSB4019:找不到导入的项目 <路径>”

    我使用 CMake 文件从命令 proms 构建一个项目 该项目可以找到here http www adobe com devnet xmp html 在构建时我遇到以下错误 C Users User Desktop XMP Toolkit
  • 在一致的环境中执行Java程序

    在我工作的地方 我们有一个 shell 脚本 它允许我们使用所有必要的库和设置执行任意 Java 类 例如 bin sh JAVA HOME bin java cp LONG LIST OF JARS Xmx6g XX MaxPermSiz
  • 有关如何部署 C++ 代码以在任何地方工作的提示

    我不是在谈论制作可移植代码 这更多的是一个分配问题 我有一个中型项目 它对常用库有几个依赖项 例如 openssl zlib 等 它在我的机器上编译得很好 现在是时候将它呈现给世界了 本质上是构建最好的工程 我想制作适用于 Windows
  • 生产准备 Ionic 应用程序的任务

    我想弄清楚是什么best从代码传递到最终可部署 apk ipa 的过程 到目前为止 我有一个使用 Karma Jasmine 的测试套件 它将 TypeScript 转换为 JS 并运行一些单元测试 我通过 gulp 开始这个过程 之后我所
  • Visual Studio 2010:如何在解决方案中强制执行项目的构建顺序?

    我在 Visual Studio 2008 中没有遇到任何问题 但 VS 2010 似乎有问题 我敢打赌这可能是我的问题 我有一个包含 ASP NET 网站项目和一些 C 项目 BLL DAL NUnit 中的测试 的解决方案 我已将测试项
  • 如何使 gradle processResources 任务更快

    我正在研究 Spring Boot 项目 并且我正在遭受构建时间的困扰 我的项目的 processResources 任务花费的时间太长 如果资源文件是最新的 大约只需要10秒 但如果文件至少更改一个 则需要几分钟的时间 这是因为一个资源库
  • Gatsby v2 网站无法正确加载 CSS

    在我的开发环境中 该网站看起来符合预期 但是当我运行 gatsby build 时 我的 CSS 无法正确显示 如果我手动导航到另一个页面 则 CSS 按预期显示 没有错误 但我确实收到此警告 资源http localhost 9000 s
  • 指定共享对象(共享库)的名称

    Go 编译器为共享对象生成的名称是错误的 例子 go install buildmode shared linkshared github com apache thrift lib go thrift code google com p
  • Webpack 的 sass-loader 构建时间较慢

    Summary 当我们改用 Webpack 处理 SASS 文件时 我们注意到在某些情况下构建时间变得非常慢 使用以下方法测量构建的不同部分的性能后测速插件 https www npmjs com package speed measure
  • Qt5 CMake 将所有库包含到可执行文件中

    我正在尝试使用 Qt 5 14 构建一个发布模式下的应用程序 并且 Qt Creator 内部一切正常 但是当我尝试单独运行可执行文件时 我收到如下错误 OS Windows 10 Qt 5 14 Cmake 3 5 我尝试过的 设置 CM
  • 使用 Ant 运行 JUnit 测试

    我正在尝试运行我的 JUnit 测试用例 但我不断收到错误 Test com capscan accentsWorld FAILED 报告已创建 但测试未运行 这是我的蚂蚁代码
  • Android 构建签名 APK 时出错:找不到用于签名配置“externalOverride”的 keystore.jks

    当我尝试构建签名 APK 时出现此错误 我最近升级到 API 23 但之后成功生成了 APK s 我很困惑 寻求帮助并建议如何解决这个问题 这是错误 FAILURE Build failed with an exception What w
  • 我可以将 Azure Dev Ops 构建定义同时用于发布管理管道和拉取请求,但后者不会触发管道吗

    简而言之 我们希望使用构建定义来生成用于发布管理的工件并检查拉取请求 但不允许后者触发新版本 我们在 Git Repo 上有 CI 构建定义 将工件输入到发布管理管道中 与许多团队一样 我们也设置了 Pull 请求来保护我们的 git ma
  • 如何向 SvelteKit/Vite 应用添加版本号?

    我正在尝试在我的 SvelteKit 应用程序中创建一个系统 它会在某个页面上向您显示有关当前应用程序版本的信息 最好是 Git 提交哈希和描述 我尝试使用Vite的定义功能 https vitejs dev config define在构
  • 使用 gradle 部署 GAE 时出现奇怪的构建失败

    直到今天一切都运转良好 据我所知 没有改变任何东西 现在我明白了 C mypath gt gradle appengineDeploy gt Configure project WARNING You are a using release
  • 如何在使用cmake完成make后打印消息?

    我正在尝试使用 CMake 完成构建过程后打印消息 我只是想在之后通知用户make命令已完成 没有任何错误 我该怎么做 我试过add custom target 但我无法选择何时跑步 另外 我尝试过add custom command 它再
  • 将 Gradle 脚本从根目录导入到子项目中

    我想在我的根 build gradle 中执行 apply from gradle script common gradle 并使其可用于我的所有子项目 我尝试将应用程序放入 子项目 中 但由于路径是相对的 因此并不总是可以解析 子项目并不
  • Jenkins:尽管没有变化,SCM 仍然触发持续构建

    我们遇到一个问题 尽管没有代码更改 SCM 仍在触发构建 SCM 每 15 分钟轮询一次更改 并且仅在发现更改时才触发构建 以下是连续 SCM 轮询日志的几个示例 Started on Nov 15 2013 11 47 14 AM Usi

随机推荐

  • C# 使用丢弃 '_'

    我不太确定之间的区别 DataTable itemTable new DataTable itemTable CODE and new DataTable DataTable itemTable CODE 两者的工作原理完全相同 为什么我需
  • Javascript 调整 Firefox 弹出窗口的大小?

    我刚刚学习 Javascript 和 jQuery 但我是一名 HTML 人员 正在尝试迈出下一步 我正在尝试将内容放入表格中 该表格可以是任何大小 用于新闻网站 我检查大小 然后相应地调整弹出窗口的大小 虽然窗口不完全正确 但它可以工作
  • 不允许嵌套类的前向声明的原因?

    Example can t forward declare with class Foo Bar actual class class Foo public class Bar or enum Bar 我承认当前的 C 标准不允许这样做 但
  • Sequelize:使用构建来更新记录

    假设我有以下简单模型 var Foo sequelize define Foo bar Sequelize STRING 还有桌子Foos数据库中有一条记录 id bar 1 abc 为了更新此记录 我可以执行以下操作 Foo findBy
  • 我应该在哪里放置要在 AngularJS 应用程序的组件/控制器之间使用的代码?

    它应该与应用程序模块关联吗 它应该是一个组件还是只是一个控制器 基本上我想要实现的是所有页面的通用布局 我可以在其中放置或删除其他组件 我的应用程序的结构大致如下 bower components core login login comp
  • 字体文件中的什么属性使程序决定模拟粗体?

    我正在寻找字体文件中的属性 来自 WPF 的System Windows Media Fonts Typeface or GlyphTypeface 或直接访问 ttf otf 文件 这将允许我确定 Windows 中的 Write Wor
  • 获取有关 YouTube 视频的信息

    我希望获取 YouTube 视频的标题和持续时间并将其显示在我的应用程序中 我想动态地执行此操作 因为会有多个视频并且它们会发生变化 我寻找过提供此信息的 URL 但没有找到 有谁知道如何做到这一点 您需要使用 Youtube API 有关
  • QtCreator:如何设置调试参数? [复制]

    这个问题在这里已经有答案了 在 QtCreator 中 我无法找到如何设置在调试模式下运行时传递给可执行文件的参数 在 QtCreator 2 6 2 中应该是 转到 调试 下名为 项目 的选项卡 现在你必须选择适合你的 Qt 版本的工具包
  • 为什么 joblib.Parallel() 比非并行计算花费更多时间? Parallel() 不应该比非并行计算运行得更快吗?

    A joblib https joblib readthedocs io en latest parallel html模块提供了一个简单的帮助程序类来使用多处理编写并行 for 循环 此代码使用列表理解来完成这项工作 import tim
  • 涉及多个表的一对一关系

    Say 我有3张桌子 User其中包含有关用户的基本信息 SectionA其中包含有关用户的更多信息 SectionB其中还包含有关用户的更多信息 只能有一个SectionA and SectionB每个用户的数据 我的想法是创建一个像这样
  • 如何使 Volley NetworkImageView 离线工作

    I use Volley NetworkImageView从互联网下载图像并显示在我的listview 现在我想做Volley NetworkImageView当没有可用网络时显示保存的图像 Volley已经缓存了图像URL作为关键 因为当
  • 在 R 中使用 sapply 绘制并排图

    我有以下代码 dat lt read table text Topic Project C10 C14 C03 C11 C16 C08 T1 P1 0 24 0 00 0 00 0 04 0 04 0 00 T2 P1 0 00 0 30
  • 基于逻辑快速 Segue

    我想在应用程序首次启动时根据 if 语句快速显示两个视图之一 我该怎么做 这就是逻辑 if signupconfirmed true have to show one view else have to show another view
  • 礼项分两行。第二行没有边距

    我目前正在处理一个无序列表 其中包含带有标语的列表项 我遇到了有关一个列表项的问题 该列表项足够长 可以占用两行 参见图片 我希望第二行与第一行对齐 这是我正在使用的 HTML 代码 我使用 fontAwesome 作为检查图像 ul wi
  • 如何使用Java代码检查客户端浏览器中是否启用了JavaScript

    任何人都可以帮助我尝试使用 Java 代码检查客户端浏览器中是否启用了 JavaScript 假设您正在编写一个 Java Web 应用程序 我成功使用的一项技术是让访问的第一个页面 通常是登录表单 在页面加载时写入会话 cookie 然后
  • Pinterest 关注者显示

    我该如何在 Wordpress 中显示我的 Pinterest 关注者 我试过this http business pinterest com widget builder do follow me button但它只显示让用户关注我的帐户
  • Node Webkit 应用程序:隐藏光标

    我正在全屏模式下使用 nodewebkit 开发我的网络应用程序 它必须与触摸屏显示器一起使用 我使用过 CSS 属性 html cursor none In NodeWebKit 的清单 https github com rogerwan
  • web.xml 中针对没有角色成员身份的经过身份验证的用户的安全约束

    我非常绝望 因为我认为一定有一个简单的解决方案来解决我的问题 但我正在寻找 无济于事 我在 Glassfish 3 1 1 中使用自定义领域 此自定义领域 实现 AppservPasswordLoginModuleInterface 从 H
  • 在 Windows 7 上使用 .NET 以编程方式创建/销毁网桥

    我正在尝试以编程方式在 Windows 7 上创建和销毁网桥 从技术上讲 我希望留在 Net 4 领域 PInvokes 很好 ofc 但使用 C 是一种选择 到目前为止我的研究表明 对于配置 netsh 命令是要去的路线 https st
  • Dojo 自定义构建由于缺少资源而出现浏览器错误

    我一直在努力学习基于 AMD 的 Dojo 构建系统 到目前为止 我还无法获得一个在浏览器 FF 中不会出现加载错误的情况下可用的构建 我对如何管理构建有疑问 我的构建配置文件有一个包部分 我在那里指定的内容似乎与写入目标目录的相同包目录直