我想通过资源加载器加载javascript和css文件.我最初使用的是LabJs,但我发现YepNope在我的场景中更优雅,更容易使用.然而,我发现它非常缓慢,这很奇怪,因为在大多数情况下它显然可以与LabJs相媲美.
我有一件事是Etags,我确信它会减慢一切,因为它仍然要求从服务器请求而不是仅仅处理客户端缓存.
无论如何,主要的YepNope网站之外没有多少,并且他们还没有在他们的问题列表上发布一个新版本,所以我想知道那里还有其他选择...
我的要求是:
我希望YepNope有点活跃但是想要权衡其他选择......
我目前使用Jquery Validation和Qtip来处理实际验证并使用验证错误的错误工具提示样式通知使用验证选项的errorPlacement组件向屏幕显示信息.
目前每个viewModel都有自己的自定义方法来设置和启动验证和回调,但是我试图找到一种更好的方法来做到这一点,无论是添加自定义绑定来通过数据绑定设置我的验证规则还是另一种方法,但仍然产生相同的结果(即,当发生验证错误时触发errorPlacement并告诉Qtip显示给定元素的错误).
在我开始自己制作之前,我刚刚在线查看并找到了Knockout Validation,我最初认为这是一个好主意,我可以将我的验证逻辑直接应用于我的viewModel中的数据,然后找到一些回调来获得Qtip启动,但似乎没有回复,我可以找到记录.图书馆似乎做了我想要的所有事情的验证方面,而不是显示方面的事情.我查看了源代码和示例但看不到除ko.validation.group(viewModel)以外的任何内容,它会给我一个包含错误的observable,但我不确定是否可以像我一样使用它期待.
以下是我当前验证如何发生的示例:
/*globals $ ko */
function SomeViewModel() {
this.SetupValidation = function () {
var formValidationOptions = {
submitHandler: self.DoSomethingWhenValid,
success: $.noop,
errorPlacement: function (error, element) {
if (!error.is(':empty'))
{ qtip.DoSomethingToDisplayValidationErrorForElement(element, error); }
else
{ qtip.DoSomethingToHideValidationErrorForElement(element); }
}
};
$(someForm).validate(formValidationOptions);
this.SetupValidationRules();
};
this.SetupValidationRules = function() {
$(someFormElement1).rules("add", { required: true, minlength: 6, maxlength: 20, alphaNumeric: true });
$(someFormElement2).rules("add", { required: true, minlength: 6, maxlength: 20 });
$(someFormElement3).rules("add", { required: true, email: true, });
}; …Run Code Online (Sandbox Code Playgroud) 我正在使用rake和albacore来构建我的.net ASP MVC项目,但是到目前为止我无法实现自动化的一部分是将构建的项目部署到IIS.目前在开发人员机器上,我让开发人员手动创建网站并将它们链接到构建生成的已发布输出文件夹.
但是现在我们有了CI框设置(Teamcity),我需要自动将网站设置为IIS,那么有没有可以在IIS上创建网站的rake任务?我记得有一段时间回来看但却找不到它.
我可以安装IIS 6元脚本的东西(不能记住它的确切名称)和任何其他iis插件,该框目前运行IIS 7.5.
==编辑==
我记得有一段时间回来的是InetMgr(https://github.com/typesafe/inetmgr),它似乎有点不稳定,对我不起作用,但似乎不再支持.
我在域上有一个HTML5/JS网站,它使用asp.mvc Web服务在另一个域上进行CORS查询.
一切都可以正常使用HTTP - > HTTP,但是我们现在正在为我们想要启用HTTPS的用户特定内容添加登录和身份验证机制.但是它只是拒绝将选项请求发送到Web服务,只是给出"已中止"状态.
我正在使用Firefox进行测试,并且使用自我证书(使用SelfSSL7生成)在IIS7上托管Web服务.
这有什么已知的问题吗?我确实检查过:
然而,它提到解决方案是确保证书是可信的,据我所知,当我调用它时,SelfSSL使用/ T选项执行此操作.那么还有什么需要改变来实现这个目的吗?
我有一个 csproj 文件,其中包含一些目标运行时,我希望有一个可以运行的单一命令,该命令可以将它们全部构建并将它们放在指定的目录中。像这样的东西:
dotnet publish -c release -o ../../some-dist-folder
Run Code Online (Sandbox Code Playgroud)
如果我运行这个命令,我会得到some-dist-folder很多好东西,但我不确定它是只输出单个运行时还是所有运行时,因为文件夹包含:
|- *.dll
|- Refs
|- *.dll
|- Runtimes
|- Lots of folders
Run Code Online (Sandbox Code Playgroud)
所以没有 exe(并不感到惊讶,因为那只是 Windows 的东西)并且运行时似乎包含大量与各种 linux/mac/windows 运行时等相关的文件夹。
但是,如果我要运行:
dotnet publish -c release -r win-x64 -o ../../some-dist-folder
Run Code Online (Sandbox Code Playgroud)
我得到一些 apphost.exe和其他一些文件并且 runtimes 文件夹不见了,所以我想知道我试图一次构建所有东西的前一种方法是否实际上不起作用,我需要为每个平台明确发布,或者我是否需要从输出中手动挑选出我关心的位。
理想情况下,我希望运行类似上面的命令并获得一个输出文件夹,例如:
|- some-dist-folder
|- win-x64
|- osx-some-version
|- some-linux-distro-version
|- other-runtimes-version
Run Code Online (Sandbox Code Playgroud)
那么我可以在单个命令中接近这个,还是明确地手动运行每个发布更安全?
我有点奇怪(但在我看来是明智的)情景.
我有一个网站,移动应用程序,可能还有一个用Javascript编写的Web服务器.我有很多功能,在所有这些系统之间共享.这个共享的东西将是模型,存储库,业务逻辑等.
如果我们排除Web服务器位,因为这是一个未来的想法,Web应用程序有一个这样的目录结构:
app
|- assets
|- models
|- services
|- migrations
|- view-models
|- views
|- descriptors
Run Code Online (Sandbox Code Playgroud)
现在每个应用程序分为2个区域,核心和ui部分,核心是可重用的东西,例如,models, services, migrationsui的东西只用于那个应用程序view-models, descriptors(包括你想知道的视图都是HTML和资产是CSS,图像等).
在我采用打字稿之前,我有一个构建脚本,它基本上将所有核心文件组合在一起并缩小它们.然后它将所有UI组合在一起并缩小它们.那样在移动应用程序中我就可以使用,my-app.core.min.js而且每个人都很高兴,我正在重用主Web应用程序中的所有可重用组件.但是我不需要ui的东西,因为移动UI与主要的web ui完全不同,并且Web服务甚至不会有UI向前发展.
通过解释上下文,我们可以回到手头的Typescript问题.目前,打字稿文件由tsc.exe(版本0.83)通过构建脚本编译,构建脚本仅包装交互.
所以在新的Typescript世界中,结构现在有一个像这样的引用文件夹:
app
|- assets
|- models
|- services
|- migrations
|- view-models
|- views
|- descriptors
|- references <- NEW ONE!
Run Code Online (Sandbox Code Playgroud)
该references文件夹由构建脚本自动填充所有本地引用,因此它将遍历整个目录树查找所有typescript文件并构建一个巨大的引用文件,这是一个充满本地typescript文件的引用声明的文件,可以查找了解更多关于我对此问题的看法:
所以现在当我运行构建脚本时,会发生以下步骤:
编译核心
tsc.exe --out <something>.core.js <previous_file_list>为UI编译
tsc.exe --out <something>.ui.js <previous_file_list>现在我希望这个输出2个文件my-app.core.js,它们只包含核心文件,而且my-app.ui.js …
这是我最近需要做的常见事情,我正在寻找任何常见的模式,以使这更容易.
它的主要内容是我有一些数据模型,它们被建模以满足ORM并且纯粹对对象进行CRUD操作.这些模型目前通过存储库/工厂公开(取决于其C或RUD).
然后,我有一个视图模型,它更具可读性,并且充满了UI关注点,例如视图之间的验证和映射数据(这是一个ASP.MVC场景,但这种情况可以在大多数情况下被抽象化).
所以我想说我去了localhost/user/1,它应该让我在数据库中找到Id 1的用户,然后在UI上显示它.最终,这必须从数据域中提取数据,然后将其映射到ui模型以用于显示目的.
以下是一个示例场景:
public class OrmUser
{
public int Id {get;set;}
public string Name {get;set;}
public IList<Permission> Permissions {get;set;}
}
public class UiUser
{
[Required]
public int Id {get;set;}
[Required]
public string Name {get;set;}
public bool IsUserAdmin {get;set;}
}
public class UserMapper : IMapper<UiUser>
{
public UiUser Get(int id)
{
var ormUser = UserRepository.Get(id);
var uiUser = new UiUser
{
Id = ormUser.Id,
Name = ormUser.Name,
IsUserAdmin = IsUserAdmin(ormUser.Permissions)
}
}
private bool IsUserAdmin(IList<Permission> permissions)
{
return …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个主要依赖于浏览器localstorage或websql的javascript应用程序(不确定哪个目标尚未定位),但是我想知道我是否要在那里保存用户应用程序数据,如果它们清除缓存它是否会被清除还是饼干?
我目前的主要部署平台是使用phonegap的智能手机.
我目前不得不处理一个使用linq2sql作为其数据库访问框架的项目,现在有很多linq查询基本上执行以下操作:
var result = from <some_table>
join <some_other_table>
join <another_table>
select <some_other_domain_model> // This is a non linq2SQL poco
return result.Where(<Some_Predicate>);
Run Code Online (Sandbox Code Playgroud)
因此,例如假设您阅读了3个表,然后将内容整理为一个更高级别的模型,以便发送到视图.现在忽略域的混合,因为这并没有太多困扰我,它是最后的where子句.
现在我还没有使用过很多Linq2Sql,所以我说对了会发生什么是正确的:
由于这是我的问题的关键所在,如果上面的流程是会发生的,那么在我的脑海中是有道理的,但是那些显然比第4步更好地了解框架的人已经讨论过这个问题.生成因此它不会撤回所有记录,但我不知道它是如何做到这一点,因为它需要预先填写所有数据,然后它应用一个单独的where子句,所以我假设到第4点行已全部被读取并且已经在内存中.
我试图推动他们将where子句移动到linq中,以便在数据库级别过滤掉不需要的记录,但是我想知道是否有人可以建议我上面的假设是否正确?
==编辑==
添加了注释以引起更多注意这个事实,即不是linq2sql生成的对象,并且是一些随机的poco手动滚动到其他地方,只是为了缩小我的主要焦点在问题的上下文.因为问题很少"does it matter where I put the where clause"而且更多"Does the where clause still get factored into the underlying query when it is applied to a non linq2sql object generated from a linq2sql query".
这是另一个更简洁的例子,我的意思是希望更多地指出我缺乏理解的地方:
/*
I am only going to put auto properties into the …Run Code Online (Sandbox Code Playgroud) 这与我到目前为止所读到的每个其他范围问题几乎相同,this除了一个微小的差异,这使得它(imo)提出这个问题是相关的.
现在我的问题是this使用Knockout和Typescript 确定范围,因此给出以下内容:
class ViewModel
{
public SomeObservableArray = new ko.observableArray();
public AddToTheObservableArray(someJsonData: any)
{
this.SomeObservableArray.push(new SomePojo(someJsonData));
}
}
Run Code Online (Sandbox Code Playgroud)
所以this在上面的代码位将炸毁因为打字稿让你认为this是类的实例,但在现实中却是一些其他的这个,因为Ajax回调或视图的元素,无论是覆盖场景this的关键字.
所以要解决这个问题,大多数解决方案都是将代码移动到类的构造函数中,我个人认为这很糟糕,但是考虑到使用TypeScript带来的其他好处,这种少量的恐怖是可以接受的.所以我们都在同一页面上,下面的代码修复了上述问题:
class ViewModel
{
public SomeObservableArray = new ko.observableArray();
public AddToTheObservableArray = (someJsonData: any) => Void;
constructor
{
this.AddToTheObservableArray = (someJsonData: any) => {
this.SomeObservableArray.push(new SomePojo(someJsonData));
};
}
}
Run Code Online (Sandbox Code Playgroud)
我只是把这个示例代码写在我的头顶上,所以我为任何拼写错误等道歉,但它是所面临的常见问题和常见解决方案/解决方法.
现在!我的问题是从这里开始的下一步,我有这样的代码:
class ViewModel
{
public SomeObservableArray = new ko.observableArray();
public AddToTheObservableArray = (someJsonData: any) => Void;
constructor …Run Code Online (Sandbox Code Playgroud) javascript ×4
iis ×2
knockout.js ×2
typescript ×2
.net ×1
.net-core ×1
asp.net ×1
build-script ×1
c# ×1
cordova ×1
cors ×1
database ×1
dotnet-cli ×1
html5 ×1
http ×1
https ×1
labjs ×1
linq ×1
linq-to-sql ×1
models ×1
qtip ×1
rake ×1
reference ×1
requirejs ×1
ruby ×1
scoping ×1
this ×1
validation ×1
viewmodel ×1
yepnope ×1