小编gra*_*amb的帖子

将webpack与现有的requirejs应用程序一起使用

我正在使用在其构建系统中使用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定义已经匿名 - 将其恢复为股票行为并没有什么区别.

我希望能够做类似的事情 …

javascript requirejs webpack

15
推荐指数
1
解决办法
1万
查看次数

Git工作流程:分叉项目并维护本地修改后的副本,但要及时了解最新信息

我正在尝试找出维护github托管项目(moodle)本地副本的最佳工作流程,同时保持我们的副本保持最新状态.告诉我,如果我正在考虑的事情是完全疯狂的:

  1. 叉项目(github.com/moodle/moodle - > github.com/sfu/moodle)
  2. 创建一个上游远程(git remote add git://github.com/moodle/moodle.git && git fetch upstream)
  3. 为我们的自定义开发创建一个分支并保持主要原始状态.
  4. 当我们想要更新我们的fork时,更新pristine分支(git checkout master && git fetch upstream && git merge upstream/master)
  5. 将master合并到我们的自定义分支中(git checkout custom && git merge master)

这有意义吗?

git github branching-and-merging

13
推荐指数
1
解决办法
657
查看次数

Relay中的全局客户端应用程序状态

在Relay应用程序中处理全局应用程序状态的当前建议或最佳实践是什么?我有一些状态是严格的客户端(例如导航面板打开或关闭),我需要管理,以及一些通过GraphQL无法获得的RESTful数据.

我知道Relay 2可以解决这个问题,但是等待" Date.now()和Date.now()+ Infinity之间的某个时间 "不是一个选项;)

reactjs graphql relayjs

6
推荐指数
1
解决办法
401
查看次数

Knex 选择静态“列”作为别名

我正在尝试使用 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()语句以便查询构建器正确解释它?

javascript postgresql knex.js graphql

6
推荐指数
2
解决办法
8618
查看次数

handlebars.js 中缺少(或“可选”)表达式?

我正在节点中编写构建脚本。简而言之,该脚本执行以下操作:

  • 提示用户输入信息(项目名称、描述等)
  • 克隆模板 git 存储库
  • 从模板名称重命名文件(例如 com_foo_template.js --> com_foo_myproject.js)
  • 根据步骤 1 中的输入替换某些模板文件中的标记

我正在尝试使用 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)

如果传入的对象中不存在标记,是否有办法让把手不替换标记?

javascript node.js handlebars.js

5
推荐指数
1
解决办法
980
查看次数