我现在正在构建一个项目,它将是一个webapp(浏览器可运行)和一个Phonegap应用程序(iOS和Android).虽然我的项目,从理论上说,可以使用相同的dist,我的文件夹约曼产生,咕噜任务build运行的生产准备代码grunt build.我想运行类似grunt build_web,grunt build_ios和grunt build_android,打造出了生产代码为每个平台分别.或者grunt build:web,grunt build:ios,grunt build:android.这样,我可以使用自己的构建指令自定义一些加载的脚本,图像等.
那么,我是否应该通过我的Gruntfile复制和粘贴所有的指令(试过这个,没用)dist和build负责任的指令?或者,这是最好的做法吗?
Yeoman人,这可能吗?
这是我当前的Gruntfile.js,以防它看起来很有用.
'use strict';
var LIVERELOAD_PORT = 35729;
var lrSnippet = require('connect-livereload')({port: LIVERELOAD_PORT});
var mountFolder = function (connect, dir) {
return connect.static(require('path').resolve(dir));
};
// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if …Run Code Online (Sandbox Code Playgroud) Yeoman的部署页面描述了将构建文件夹(也称为"dist")提交到repo的过程,然后使用以下命令将该文件夹作为git子树推送.
git subtree push --prefix dist origin gh-pages
我的工作正常,并且我只能从我的构建子树分支中的dist文件夹部署构建代码(上例中的gh-pages).
我现在可以.gitignore这个dist文件夹从主人?如果是这样,会git subtree push --prefix dist origin gh-pages继续工作吗?
如果没有,我如何避免将构建的源提交到master分支,同时将其保存在Git子树中进行部署?(需要将它保留在分支中,因为我使用Capistrano进行部署,而这种部署依赖于将整个分支部署到服务器.)
我正在尝试在我的Rails 4引擎视图中使用一些URL和/或路径助手,例如resource_url或resource_path.这些引擎的配置与典型的可安装教程略有不同.实际上,如果没有Spree :: ENGINE_NAME命名空间,它们更像Spree的工作方式.
像Spree的架构一样,我正在尝试创建其他引擎所依赖的核心引擎.例如,我的后端引擎的routes.rb文件如下所示:
Core::Engine.add_routes do
# Check to see if the request comes in on a subdomain
# The Subdomains class passed into constraints()
# is a class defined in lib/subdomain.rb
constraints(Subdomain) do
match '/manage' => "manage#index", :via => [:get]
end
end
Run Code Online (Sandbox Code Playgroud)
在我的后端引擎内部的视图中,我希望能够使用一些URL /路径助手来执行以下操作:
<%= link_to manage_path, manage_path %>
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我在核心引擎上绘制路线.所以,我必须使用
<%= link_to core_engine.manage_path, core_engine.manage_path %>
Run Code Online (Sandbox Code Playgroud)
狂欢不知何故绕过这个,但我不确定如何.例如,在backend/app/views/spree/admin/products/index.html.erb:
<%= link_to product.try(:name), edit_admin_product_path(product) %>
Run Code Online (Sandbox Code Playgroud)
请注意,edit_admin_product_path但实际上没有提到核心引擎. …
我正在Marionette.View使用我命名的方法扩展Marionette的基本类型quickClick.我这样做
配置/木偶/ view.js
(function() {
define([
'backbone.marionette'
],
function(Marionette){
return _.extend(Backbone.Marionette.View.prototype, {
quickClick: function(e) {
$(e.target).get(0).click();
}
});
});
}).call(this);
Run Code Online (Sandbox Code Playgroud)
这允许我从我创建的任何视图中调用此方法,而无需为每个视图重新定义它.大!
这是一个精简的视图,事件对象仍然存在:
(function() {
define([
'backbone.marionette',
'app',
'templates'
],
function(Marionette, App, templates){
// Define our Sub Module under App
var List = App.module("SomeApp");
List.Lessons = Backbone.Marionette.ItemView.extend({
events: {
'tap .section-container p.title': 'quickClick'
}
});
// Return the module
return List;
});
}).call(this);
Run Code Online (Sandbox Code Playgroud)
万一你想知道,tap是我在Hammer.js使用的一个事件,因为这是一个移动应用程序.因此,为了规避iOS和Android上的300ms点击事件延迟,我会click在tap事件触发某些元素时手动触发事件.
现在,所有这些工作都很顺利,我觉得有必要对此进行详细描述,以便在上下文中给出答案.
我的问题是必须定义events对象.我完全不介意上面提到的那些元素,.section-container …
yeoman ×2
cordova ×1
deployment ×1
git ×1
gruntjs ×1
javascript ×1
marionette ×1
node.js ×1
spree ×1