我正在使用在其构建系统中使用RequireJS 的现有应用程序(canvas-lms).我正在开发一个插入Canvas的伪独立应用程序(Canvas一句中的"client_app").这是一个仅限于fontend的应用程序,可以将API调用回主机Canvas应用程序.详细信息对我的问题并不十分重要 - client_app需要做的就是拥有一个构建脚本,该脚本在Canvas应用程序树中定义的位置吐出一个JS文件.
我正在尝试使用Webpack构建我的应用程序而不是RequireJS.如果我保持所有依赖项都是自包含的(例如npm-install我需要的所有内容),那么一切都很有效; 但是,Canvas已经提供了许多这些依赖项(例如React,jQuery),而在jQuery的情况下,它提供了一个我想要使用的修补版本.这是我开始遇到问题的地方.
让React工作很容易; Canvas用bower安装它,所以我能够alias
在我的webpack配置中添加一个指向它:
alias: {
'react': __dirname + '/vendor/canvas/public/javascripts/bower/react/react-with-addons',
}
Run Code Online (Sandbox Code Playgroud)
(__dirname + /vendor/canvas
是我的应用程序树中的符号链接到主机Canvas应用程序的树)
我遇到麻烦的地方是尝试加载提供的jQuery副本.
Canvas具有以下jQuery结构:
/public/javascripts/jquery.js:
define(['jquery.instructure_jquery_patches'], function($) {
return $;
});
Run Code Online (Sandbox Code Playgroud)
/public/javascripts/jquery.instructure_jquery_patches.js:
define(['vendor/jquery-1.7.2', 'vendor/jquery.cookie'], function($) {
// does a few things to patch jquery ...
// ...
return $;
});
Run Code Online (Sandbox Code Playgroud)
/public/javascripts/vendor/jquery.cookie.js - 看起来像标准的jquery.cookie插件,包含在AMD定义中:
define(['vendor/jquery-1.7.2'], function(jQuery) {
jQuery.cookie = function(name, value, options) {
//......
};
});
Run Code Online (Sandbox Code Playgroud)
最后是/public/javascripts/vendor/jquery-1.7.2.js.不会粘贴它,因为它是bog标准的jQuery1.7.2,除了AMD定义已经匿名 - 将其恢复为股票行为并没有什么区别.
我希望能够做类似的事情 …
我正在尝试找出维护github托管项目(moodle)本地副本的最佳工作流程,同时保持我们的副本保持最新状态.告诉我,如果我正在考虑的事情是完全疯狂的:
这有意义吗?
在Relay应用程序中处理全局应用程序状态的当前建议或最佳实践是什么?我有一些状态是严格的客户端(例如导航面板打开或关闭),我需要管理,以及一些通过GraphQL无法获得的RESTful数据.
我知道Relay 2可以解决这个问题,但是等待" Date.now()和Date.now()+ Infinity之间的某个时间 "不是一个选项;)
我正在尝试使用 Postgres 在 Knex 中实现以下查询,以返回静态“$type”列(用于向 GraphQL 服务器提供类型提示):
select *, 'Patrol' as "$type" from patrol;
当我使用 Knex 查询构建器时,它会修改引号:
knex('patrol')
.select(['*', `'Patrol' as "$type"`])
.where('id', 12345)
.first()
Run Code Online (Sandbox Code Playgroud)
退货
ERROR: column "'Patrol'" does not exist at character 11
STATEMENT: select *, "'Patrol'" as """$type""" from "patrol" where "id" = $1 limit $2
Run Code Online (Sandbox Code Playgroud)
我可以使用 构造查询knex.raw()
,但我真的不想这样做:
knex.raw(
`SELECT *, 'Patrol' as "$type" FROM patrol WHERE id = '${value}' LIMIT 1;`
)
Run Code Online (Sandbox Code Playgroud)
我应该如何构造select()
语句以便查询构建器正确解释它?
我正在节点中编写构建脚本。简而言之,该脚本执行以下操作:
我正在尝试使用 Handlebars.js 进行令牌替换步骤。
还有第二阶段的部署,其中也涉及代币替换。这是我的问题的根源。
在某些文件中,其中包含的所有令牌都将在初始化期间被替换(克隆/重命名/替换部分)。在其他文件中,只有其中一些令牌会在初始化时被替换,而其他令牌在部署步骤运行之前不会被替换(例如部署日期、git 提交哈希等)。考虑以下文件:
<zimletConfig name="{{name}}" version="{{deploy_version}}">
<global>
<property name="allowedDomains">*.foo.com</property>
<property name="gitCommit">{{gitcommit}}</property>
<property name="deployDate">{{deploydate}}</property>
</global>
</zimletConfig>
Run Code Online (Sandbox Code Playgroud)
在此文件中,只有 {{name}} 应在初始化时替换;其他令牌应仅在部署时替换。但是,当我运行 init 步骤时,部署时令牌将替换为空字符串:
<zimletConfig name="com_foo_myproject" version="">
<global>
<property name="allowedDomains">*.foo.com</property>
<property name="gitCommit"></property>
<property name="deployDate"></property>
</global>
</zimletConfig>
Run Code Online (Sandbox Code Playgroud)
如果传入的对象中不存在标记,是否有办法让把手不替换标记?