单页应用程序 (SPA)已经到了我们面前。 还有很多新的东西,比如路由,客户端的页面生命周期,MVC模式,MVVM模式,MV *模式,以及一些Javascript模式,像AMD模式 , Singleton , Facade ,.. 许多SPA框架和图书馆也被开发出来。 我们可以在互联网上find它的一些。 他们是AngularJs , Reactjs , BackboneJs , DurandalJs ,以及很多第三方组件,使得Javascript编码更加简单,就像RequireJs , Amplifyjs , BreezeJs … 但我只是想为什么我们需要SPA? 因为它被看作是在开发Web应用程序中引入一些新的复杂的东西。 尽pipeSPA,我们可以使用传统的Web应用程序,每个请求每个加载页面。 我只是看到一个好处,就像我们可以很容易地在移动设备上运行它,并适应新的Web应用程序发展趋势。 有人能解释得更清楚吗? 还有一件事,如果我们使用大量的第三方组件来组成一个SPA。 那么它是否为这个Web应用程序保持一致? 我认为它应该使我们的Web应用程序内维护一个巨大的组件复杂。 你怎么想的? 所有的build议都欢迎。
有没有办法创build一个JavaScript微型库(一个没有依赖关系的库),支持以下所有模块格式: asynchronous模块定义 CommonJS的 将库的导出作为全局名称空间对象公开(无加载器)
我们喜欢RequireJS和AMD在开发过程中,我们可以编辑一个模块,在我们的浏览器中重新加载,并立即看到结果。 但是,当我们将模块连接成一个单独的文件进行生产部署时,显然必须有一个AMD加载器,无论该加载器是RequireJS本身,还是小型合作伙伴“杏仁”,如下所述: http://requirejs.org/docs/faq-optimization.html#wrap 我的困惑是:为什么装载机是必要的? 除非你有非常不寻常的情况,使得你require()在你的模块中进行require()调用,否则看起来一系列的AMD模块可以在没有加载器的情况下连接在一起。 最简单的例子可能是像下面这样的一对模块。 ModA.js: define([], function() { return {a: 1}; }); ModB.js: define(['ModA'], function(A) { return {b : 2}; }); 考虑到这两个模块,似乎一个连接器可以简单地生成以下文本,并且不会给生产服务器或浏览器带来RequireJS或Almond所需的额外带宽或计算负担。 我想象一个产生(我使用V形引号«,»来显示上面两个模块的代码片段已被插入的连接符): (function() { var ModA = «function() { return {a: 1}; }»(); var ModB = «function(A) { return {b : 2}; }»(ModA); return ModB; })(); 就我所知,这将正确地重现AMD的语义,并至less有一些额外的粘连JavaScript。 有没有这样的连接器? 如果不是的话,我是否会觉得自己应该写一个傻瓜 – 是否真的有很less的代码库,它们是用define()编写的简单和干净的模块组成的,而且不需要进一步的require()调用,代码提取?
我正在使用require.js和r.js打包我的AMD模块。 我通过以下语法使用jquery&requirejs: <script data-main="/js/client" src="/js/external/require-jquery.js"></script> 这一切都很好的前后包装,但我遇到了很多问题,铬和移动Safari浏览器持有的caching版本的client.js。 我想添加一个cachebuster client.js,但我似乎无法弄清楚如何使用上述语法。 我尝试了一些变化: <script data-main="js/client.js?b=busted" src="/js/external/require-jquery.js"></script> 但现在需要尝试从/ ,而不是/js获取client.js,所以它是404s。 我也尝试添加 urlArgs : "bust="+new Date().getTime() require.config ,但它似乎没有效果。 我也尝试给app.build.js添加相同的值,但是当它在那里时,r.js不再连接我的js文件,只是丑化它们。 什么是正确的语法来破坏一个require.js数据主脚本caching?
我的公司已经开始有很多客户打来电话了,因为我们的程序在他们的系统上发生访问冲突。 SQLite 3.6.23.1发生崩溃,我们将其作为应用程序的一部分发布。 (我们发布了一个自定义构build,以便使用与应用程序其余部分相同的VC ++库,但是这是股票SQLite代码。) 当pcache1Fetch执行call 00000000时发生崩溃,如WinDbg调用堆栈所示: 0b50e5c4 719f9fad 06fe35f0 00000000 000079ad 0x0 0b50e5d8 719f9216 058d1628 000079ad 00000001 SQLite_Interop!pcache1Fetch+0x2d [sqlite3.c @ 31530] 0b50e5f4 719fd581 000079ad 00000001 0b50e63c SQLite_Interop!sqlite3PcacheFetch+0x76 [sqlite3.c @ 30651] 0b50e61c 719fff0c 000079ad 0b50e63c 00000000 SQLite_Interop!sqlite3PagerAcquire+0x51 [sqlite3.c @ 36026] 0b50e644 71a029ba 0b50e65c 00000001 00000e00 SQLite_Interop!getAndInitPage+0x1c [sqlite3.c @ 40158] 0b50e65c 71a030f8 000079ad 0aecd680 071ce030 SQLite_Interop!moveToChild+0x2a […]
我从这里读取了requirejs文档 requirejs.config({ shim: { 'backbone': { //These script dependencies should be loaded before loading //backbone.js deps: ['underscore', 'jquery'], //Once loaded, use the global 'Backbone' as the //module value. exports: 'Backbone' }, 'underscore': { exports: '_' }, 'foo': { deps: ['bar'], exports: 'Foo', init: function (bar) { //Using a function allows you to call noConflict for […]
我在我的应用程序中使用了Webpack,在这个应用程序中,我创build了两个入口点 – 所有JavaScript文件/代码的bundle.js,以及jQuery和React等所有库的vendor.js。 我该怎么做才能使用jQuery作为依赖的插件,我也想在vendor.js中使用它们? 如果这些插件有多个依赖关系呢? 目前我试图在这里使用这个jQuery插件 – https://github.com/mbklein/jquery-elastic 。 Webpack文档提到了providePlugin和imports-loader。 我用providePlugin,但仍然是jQuery对象不可用。 这里是我的webpack.config.js看起来像 – var webpack = require('webpack'); var bower_dir = __dirname + '/bower_components'; var node_dir = __dirname + '/node_modules'; var lib_dir = __dirname + '/public/js/libs'; var config = { addVendor: function (name, path) { this.resolve.alias[name] = path; this.module.noParse.push(new RegExp(path)); }, plugins: [ new webpack.ProvidePlugin({ $: […]