jjzjj

javascript - 为什么我需要加载 JavaScript 模块,所有这些加载器之间有什么区别?

问题1:为什么我需要在网页中异步加载我的JavaScript文件?我可以在服务器端看到它的基本原理,但是如果我知道我需要在客户端加载的所有文件,为什么我不应该将我的所有源文件连接成1个文件并在页面加载时加载它?首次初始页面加载是否如此重要,以至于future的操作可能会因检索每个JS文件的延迟而变慢?问题2:假设问题1的答案是我需要单独加载JS文件:AMD异步加载每个JS文件,CommonJS同步加载。服务器端加载需要CJS(如果我没记错的话,这就是Node.js的工作方式)。AMD似乎更适合客户。因此,在客户端使用CJS的唯一原因是与服务器共享代码。有没有什么办法可以让AMD和CJS

javascript - 与 AMD (requirejs) 一起获得闭包编译器类型安全性的最可靠方法是什么?

虽然JavaScript及其许多库(jQuery、RequireJS)允许创建许多很棒的网站,但在考虑构建更大的网站时,我发现它缺乏类型安全性令人望而生畏。Google有一个很棒的closurecompiler这让你可以annotate你的JavaScript和JSDoc并检查它的类型。在试用了其丰富的类型系统后,我预计这将大大提高生命周期更长的JavaScript项目的可维护性。唯一的问题是它不能很好地与AMD一起玩像RequireJS这样的库。有一个实验--transform_amd_modules连接JavaScript文件并通过消除它来处理作用域的标志。然而,这似乎有点反模式,

javascript - import * vs import { specificName } 在 Typescript/ES6 中?

声明declaremodule"MyModule"{exportfunctionFoo(){...}exportfunctionBar(){...}}我只需要Foo某处,我应该如何导入它?import*asMyModulefrom"MyModule";MyModule.Foo();或import{Foo}from"MyModule";Foo()哪个比另一个好?以第一种方式导入所有导出是否有任何性能影响?我在发布问题之前阅读的一些引用资料:https://www.exratione.com/2015/12/es6-use-of-import-property-from-module-is

javascript - 如何在基于 Backbone.js 的应用程序中干净地获取 401

在我基于Backbone.js的应用程序中,我正在与我的API对话,该API以401响应,以防底层请求是在没有或使用无效身份验证token的情况下发出的。每次收到401时,我都想通过导航到#login页面来进行检测。为了获取401,我成功包装了Backbone.sync,但那时我有点卡住了。我在这里尝试了几种策略:在Backbone::sync中抛出'unauthorized'并尝试在我的路由器中获取。失败:“未经授权未捕获”尝试在Backbone::sync中向下#.navigate'#login'这不仅看起来很奇怪,而且还带来了我的应用程序基于AMD/require.js的问题而且

javascript - 我们可以从 requirejs 中的模块导出多个非 AMD 函数吗?

如果我有一个名为old.js的非AMD模块,并且在这个脚本中我定义了两个函数f1和f2。我需要使用它们,如何导出两者?require.config({paths:{"jquery":"https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min",},shim:{"old":{deps:["jquery"],exports:["f1","f2"]}},urlArgs:"bust="+(newDate()).getTime()});这行不通。我会得到split错误。该文档没有提到多个(http://requirejs.org/

javascript - 在 RequireJS 环境下模拟使用 Lo-Dash 和 Underscore

在RequireJS环境中,允许某些AMD模块使用Lo-Dash而其他模块同时使用Underscore的最佳方法是什么? 最佳答案 我能够相当简单地自己解决问题。专门为需要Lo-Dash的模块使用lodash路径,为需要“underscore”的模块使用underscore:require.config({paths:{'underscore':'path-to-my-underscore-file','lodash':'path-to-my-lodash-file'}});这样两个库可以同时使用,互不干扰。与普遍的看法和主张相反,

javascript - 使用 require.js 加载非 amd 模块

目前我正在为一个有趣的副项目使用require.js我正在工作,除了一个名为prism.js的代码语法高亮插件外,一切正常。我可以看到插件正在通过Chrome中的网络选项卡提取,但插件未初始化。我不确定这是需求问题还是插件问题,想知道是否有人可以提供帮助。下面是我的main.js:require.config({//3rdpartyscriptaliasnamespaths:{//CoreLibrariesmodernizr:"libs/modernizr",jquery:"libs/jquery",underscore:"libs/lodash",backbone:"libs/bac

RequireJS/AMD 模块中的 JavaScript 代码覆盖率

简短且看似愚蠢的问题,因为它如此简单而且您认为无处不在:有没有人获得任何类型的代码覆盖率以在RequireJS前端项目(非NodeJS)中工作?由于TDD方法在JS世界中的流行以及AMD开发的接管,这似乎是一个愚蠢的问题。我已经尝试了一百万种方法,但都缺乏。我的项目是一个带有Jasmine单元测试的Backbone项目:1)带有Coverage插件的JSTD。JSTD无法正确加载和检测AMD模块。如果我在单个js文件上运行JSTD(由RequireJS优化器组合),那么代码覆盖率会很好地工作,除了然后收集覆盖率并在整个文件上定义指标。太好了,这没用,因为它包含第3方库,而且因为我无法针

javascript - 定义模块并立即使用 RequireJS

我正在为使用RequireJS的应用程序编写一些测试。由于应用程序的工作方式,它希望通过调用require获取一些类。因此,为了测试,我有一些虚拟类,但我不想为了这个测试而将它们放入单独的文件中。我更喜欢像这样在我的测试文件中手动define()它们:define('test/foo',function(){return"foo";});define('test/bar',function(){return"bar";});test("...",function(){MyApp.load("test/foo");//这里的问题是这些模块的评估会延迟到触发脚本onload事件。Fromr

javascript - AMD + Backbone + JSDoc3 最好的文档方式

我正在寻找记录我的代码的最佳方式,但我没有找到任何东西。我看过其他主题,包括this,但都没有解决我的问题。我有这样的东西:define(['backbone'],function(Backbone){/***@modulemodels/products*//***Productmodel*@class*/varProduct=Backbone.Model.extend({/**@lendsProduct.prototype*//***Somemethod*@param{String}name-Nameofsomething*@return{something}*/someMethod