我正在使用requireJS来加载脚本.它在文档中有这个细节:
用于模块名称的路径不应包含.js扩展名,因为路径映射可以用于目录.
在我的应用程序中,我将所有脚本文件映射到配置路径中,因为它们是在运行时动态生成的(我的脚本开始像生活一样,order.js
但变成类似的东西order.min.b25a571965d02d9c54871b7636ca1c5e.js
(这是文件内容的哈希,用于缓存目的) .
在某些情况下,require会在这些路径的末尾添加第二个.js扩展名.虽然我在服务器端生成动态路径然后填充配置路径,但我必须编写一些额外的javascript代码以.js
从有问题的文件中删除扩展.
阅读requireJS文档,我真的不明白为什么你想要将路径映射用于目录.这是否意味着可以在一次调用中以某种方式加载整个目录的文件?我不明白.
有没有人知道是否可以强制要求停止将.js添加到文件路径,这样我就不必破解它了?
谢谢.
更新:根据请求添加了一些代码示例.
这是在我的HTML文件中(它是一个Scala项目,所以我们不能将这些变量直接写入.js
文件):
foo.js.modules = {
order : '@Static("javascripts/order.min.js")',
reqwest : 'http://5.foo.appspot.com/js/libs/reqwest',
bean : 'http://4.foo.appspot.com/js/libs/bean.min',
detect : 'order!http://4.foo.appspot.com/js/detect/detect.js',
images : 'order!http://4.foo.appspot.com/js/detect/images.js',
basicTemplate : '@Static("javascripts/libs/basicTemplate.min.js")',
trailExpander : '@Static("javascripts/libs/trailExpander.min.js")',
fetchDiscussion : '@Static("javascripts/libs/fetchDiscussion.min.js")'
mostPopular : '@Static("javascripts/libs/mostPopular.min.js")'
};
Run Code Online (Sandbox Code Playgroud)
然后在我的内心main.js
:
requirejs.config({
paths: foo.js.modules
});
require([foo.js.modules.detect, foo.js.modules.images, "bean"],
function(detect, images, bean) {
// do stuff
});
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我必须使用字符串"bean"(指的是require路径)而不是我的直接对象(就像其他人使用的那样foo.js.modules.bar
),否则我会得到额外的.js
附加.
希望这是有道理的.
我已经尝试按照ng-directive-testing repo 的格式来编写我编写的指令.当用户点击元素时,该指令基本上呈现叠加.这是指令(简化):
mod.directive('uiCopyLinkDialog', function(){
return {
restrict: 'A',
link: function(scope, element, attrs) {
var $elm = angular.element(element);
element.bind('click', function(event) {
$elm.addClass('test');
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
我写的测试看起来像这样:
describe('pre-compiled link', function () {
beforeEach(mocks.inject(function($compile, $rootScope) {
scope = $rootScope;
element = angular.element('<span class="foo" ui-copy-link-dialog="url"></span>');
$compile(element)(scope);
scope.$digest();
}));
it("should change the class when clicked", function () {
element.click(); // this returns "'undefined' is not a function"
element[0].click(); // so does this
$(elm).click(); // this uses jquery and doesn't *seem* to fail …
Run Code Online (Sandbox Code Playgroud) 今天就Django提问.
缓存框架看起来非常棒,我想在整个网站上使用它.我没有为我的视图设置明确的到期时间,而是希望无限期地缓存它们,并且只在内容更改时使缓存无效/删除.梦想的场景吧?
有没有办法挂钩Django的自动管理员,以便在CRUD操作发生时,相关的缓存被删除?我希望我不得不以某种方式告诉管理面板哪个模型应该使哪个类无效,但原则上,这可能吗?我可以添加某种回调吗?任何替代品?
谢谢!马特
我正在运行查询以获取5个最新News
项目.在我的模板中,我想在一个位置显示第一个项目,然后在页面下方显示剩余的4个项目.
在我的模板中,我做了这样的事情:
{% for n in news|slice:":1" %}
{{ n.headline }}
{% endfor %}
... more HTML ...
{% for n in news|slice:"1:" %}
{{ n.headline }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
当我查看调试工具栏时,这会导致对数据库的两个查询:一个与LIMIT 1
另一个查询LIMIT 4 OFFSET 1
,但在其他情况下相同.我很欣赏这是Django的智能方式,只是请求你实际使用的东西,但在这种情况下,它似乎有点过分.做这种事的最好方法是什么?
我正在遵循使用Travis 部署到AWS CodeDeploy的指南。在这些文档中,他们指向了一个包含以下代码的.travis.yml
示例:
deploy:
- provider: s3
access_key_id: AKIAJ4XZHIMNKP3WGGHQ
secret_access_key: &1
secure: <key>
local_dir: dpl_cd_upload
skip_cleanup: true
on: &2
repo: travis-ci/cat-party
bucket: catparty-codedeploy
- provider: codedeploy
access_key_id: AKIAJ4XZHIMNKP3WGGHQ
secret_access_key: *1
bucket: catparty-codedeploy
key: latest.zip
bundle_type: zip
application: CatPartyDemoApplication
deployment_group: ProductionDemoFleet
on: *2
Run Code Online (Sandbox Code Playgroud)
我已经完成了这项工作并了解了流程(首先将zip文件上传到S3,然后将文件部署到CodeDeploy)。我苦苦挣扎的是语法:特别是on: &2
本s3
节中的行,以及on: *2
本codedeploy
节中的部分。这些行在做什么?
我问是因为我想修改此配置,以根据提交是否具有给定标签来将其部署到其他CodeDeploy组,例如:
on:
tags: true
all_branches: true
condition: "$TRAVIS_TAG =~ ^release.*$"
Run Code Online (Sandbox Code Playgroud)
...但是由于我不清楚on: *2
执行的操作(并且无法在文档中找到),因此我不确定该如何进行。有小费吗?
我正在为我们的网站编写广告预订系统.广告使用StartDate
和EndDate
字段预订,以表明他们在线的时长.
添加新广告时,我会进行快速验证检查,以确保新广告不会与预订到同一位置的现有广告冲突.
我以为我有这个查询:
SELECT *
FROM adverts
WHERE EndDate >= '2010-04-22'
AND StartDate < '2010-04-22'
Run Code Online (Sandbox Code Playgroud)
2010-4-22是StartDate
我要预订的新广告.已经预订的广告StartDate
是2010-04-26,2010-05-09 EndDate
.
这些是具有不同日期的查询结果:
尝试在现有广告结束后预订广告:返回0行(正确)
尝试在现有广告的日期范围内预订广告开始和结束:返回1行(正确)
尝试在现有广告开始之前预订广告开始和结束:返回0行(正确)
尝试在现有广告开始之前预订广告,并在现有广告的日期范围内持续投放:返回0行(不正确)
尝试预订广告从BEFORE开始并在当前广告结束后结束:返回0行(不正确!)
有没有人有任何想法如何重写这个查询所以我可以确保它只在日期范围内发现冲突?
谢谢,马特
我是Linux新手,但想尝试别名.
我有一个软件版本分支目录.目录结构如下所示:
/home/username/software/release-1
/home/username/software/release-2
/home/username/software/release-3 etc
Run Code Online (Sandbox Code Playgroud)
我想添加一个别名,这样我就可以键入类似"cdr 1"的内容并自动进入release-1目录.
我知道我可以将这些行添加到我的.bashrc中:
alias cdr 1='cs /home/username/software/release-1'
alias cdr 2='cs /home/username/software/release-2' etc
Run Code Online (Sandbox Code Playgroud)
但有没有办法将参数传递给别名,所以我不必为每个新版本更新它?
谢谢马特
我收集了 200,000 多条记录,其中包括一个浮点字段amountAwarded
(例如 12345.67、2342、22 等)。我正在使用 MongoDB 根据以下边界将这些聚合到桶中:
amountAwarded: [
{
$bucket: {
groupBy: '$amountAwarded',
boundaries: [0, 10000, 50000, 100000, 1000000, Infinity],
output: {
count: { $sum: 1 }
}
}
}
]
Run Code Online (Sandbox Code Playgroud)
这按预期工作,我得到了这个输出:
{
"amountAwarded": [
{
_id: 0,
count: 269
},
{
_id: 10000,
count: 67
},
// etc
]
}
Run Code Online (Sandbox Code Playgroud)
我真正想要的是在输出中引用桶边界,例如:
{
"amountAwarded": [
{
_id: 0,
count: 269,
lowerBound: 0,
upperBound: 9999
}
]
}
Run Code Online (Sandbox Code Playgroud)
这意味着我可以在前端构建一个显示桶的列表(例如£0 - £9999
)。
我来的最接近的是将$min: "$amountAwarded"
(和等效的$max …
我正在使用 Joi 来验证用户提交的表单数据。数据包含银行详细信息:此处的相关信息是accountNumber
和sortCode
。我需要获取两个输入的值并通过外部 API 运行它们以确认它们一起有效。
我正在努力编写一个自定义的 Joi 扩展,它可以获取数据中另一个字段的值。这是我尝试过的简化版本:
const baseJoi = require('joi');
const bankDetails = joi => {
return {
name: 'bankDetails',
base: joi.number().required(),
rules: [
{
name: 'accountNumber',
params: {
number: joi.number().required()
},
validate(params, value, state, options) {
console.log(value); // returns 12-34-46 (sortCode)
console.log(params.number); // returns a [Function: ref] object
console.log(state.parent.accountNumber); // returns 88888888, but feels "wrong"
}
}
]
};
};
const Joi = baseJoi.extend([bankDetails]);
const validateBankDetails = () => {
return Joi.bankDetails().accountNumber(Joi.ref('accountNumber')).required();
}; …
Run Code Online (Sandbox Code Playgroud) 我是SVN的新手,并在我的Dreamhost测试服务器(具有Subversion"一键安装"功能)上本地进行了实验.
找到了解决这个问题的方法,我肯定已经销售了,但是使用它来管理我的工作网站(没有Dreamhost托管,所以不提供一键式SVN安装)有点迷失.
我是否正确认为我可以在我的网站根目录(包含所有文件)上设置存储库,然后当我开发新功能并运行提交时,这将更新我的网站?这是适合这种事情的工作流程吗?
如果是这样,有没有一种标准方法可以在我的远程服务器上设置这种东西?
谢谢.
Django的新手在我的方法论中可能是完全错误的.
我有一块复杂的HTML,我在我的网站的几个部分重用,但填充了不同的数据.我想把它变成一个可以放在任何地方的块.
我读了包含标签并将其定义如下:
from django import template
register = template.Library()
@register.inclusion_tag('release_widget.html')
def release_widget(releases):
return {'release_list': releases}
Run Code Online (Sandbox Code Playgroud)
然后当我在我的模板中使用它时:
{% load release_widget %}
{% release_widget release_list %}
Run Code Online (Sandbox Code Playgroud)
这有效.我的问题是,在release_widget.html文件中,我失去了对我的MEDIA_URL
变量的访问权限,该变量定义了在哪里可以找到我的图像资源.我认为这是因为上下文没有通过?
我查看了takes_context=True
参数,但无法弄明白 - 看起来这不再需要变量,这对我不起作用 - 我需要能够在每次包含块时传递不同的字典.
有没有更好的方法呢?我甚至可以使用MEDIA_URL
吗?我不能只使用绝对路径,因为我的网站结构就像site.com/article/something/123,资产在site.com/assets/,我不想../
到处都是.
谢谢,马特
我正在写一个AJAX函数,它返回一些信息显示在一个<div>
.我的代码看起来像这样:
HTML:
<div id="basket_summary">Your basket's empty. Why not add some items to get started?</div>
jQuery(ajax调用的相关部分):
success: function(products){
$('#basket').html(products.basket);
$('#basket_summary').html(products.summary);
Run Code Online (Sandbox Code Playgroud)
我可以确认products.summary变量包含我想要显示的文本.
当我第一次运行此代码时,它可以工作,但是当我检查源代码时,该<div id="basket_summary">
部分被删除,所以第二次调用该函数时,该元素不再存在.如果我<div id="basket_summary">
在我的AJAX返回数据中包含它,它会添加它,所以我最终得到这个:
<div id="basket_summary">
<div id="basket_summary">3 items in your basket</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这不是函数通常对我有用的方式 - 它通常不会触及包含元素.任何人都可以解决这个问题吗?