我正在学习Backbone/Handlebars/Require.我已经在网上查看了所有内容 - 是否有任何可以指导我的教程或网站,这将为使用把手而不是下划线提供有用的信息?
Bootstrap在CDN中分发
是否可以使用Require.JS 2.x(shimmed或原生AMD)加载Bootstrap?
如何使用Require.js直接从CDN URL加载Bootstrap或任何缩小的JS
垫片中"出口"物业的目的是什么?真的需要吗?
requirejs.config({
shim: {
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
Run Code Online (Sandbox Code Playgroud)
我问,因为它似乎是多余的 - 当模块包含在依赖列表中时,我们将再次指定导出的名称作为函数参数:
define(['backbone'], function (Backbone) {
return Backbone.Model.extend({});
});
Run Code Online (Sandbox Code Playgroud) 我开始阅读有关RequireJS的几个教程.在他们中没有一个是"define"关键字为我解释得令人满意.有人可以帮我解决以下问题:
define(
["Models/Person", "Utils/random", "jquery"],
function (Person, randomUtility, $) {..}
)
Run Code Online (Sandbox Code Playgroud)
什么是"定义"?是否定义了一个带有数组和内部匿名函数的函数?或者是别的什么?有人能给我更多关于这种定义的信息吗?
另外:谢谢nnnnnn和pradeek的回答.在欧洲,当我发布问题的那天晚上2:30.也许因此我没有意识到这是一个简单的函数调用.
我想为我正在使用的网络应用程序使用facebook共享插件,我只需要基本的共享按钮.该应用程序使用requirejs来加载javascript,所以我按照操作方法将facebook api url更改为在facebook docs上的代码片段中找到的那个.这不起作用,并且sdk抛出错误invalid version specified.这就是我的文件的样子.
main.js
require.config({
shim: {
'facebookshare' : {
exports: 'FB'
}
},
paths: {
'facebookshare': "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0"
}
});
require(['fb']);
Run Code Online (Sandbox Code Playgroud)
fb.js
define(['facebookshare'], function(facebook) {
document.body.innerHTML += '<div class="fb-share-button" data-href="https://developers.facebook.com/docs/plugins/" data-layout="button"></div>';
});
Run Code Online (Sandbox Code Playgroud)
仅包含facebook共享插件和requirejs的最佳方法是什么?
我提到了以下问题,但没有一个提供具体的解决方案.未捕获的错误:未指定版本且版本错误.
我们假设这是我的config.js或main.js:
require.config({
// paths are analogous to old-school <script> tags, in order to reference js scripts
paths: {
jquery: "libs/jquery-1.7.2.min",
underscore: "libs/underscore-min",
backbone: "libs/backbone-min",
jquerymobile: "libs/jquery.mobile-1.1.0.min",
jquerymobilerouter: "libs/jquery.mobile.router.min"
},
// configure dependencies and export value aliases for old-school js scripts
shim: {
jquery: ["require"],
underscore: {
deps: ["jquery"],
exports: "_"
},
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
jquerymobilerouter: ["jquery", "backbone", "underscore"],
jquerymobile: ["jquery", "jquerymobilerouter", "backbone", "underscore"]
}
});
require(["jquery", "backbone", "underscore", "app/app.min", "jquerymobilerouter", "jquerymobile"], function ($, Backbone, _, …Run Code Online (Sandbox Code Playgroud) 我正在努力用requireJS加载gmaps api.这就是我尝试过的:
requirejs.config({
urlArgs: "noCache=" + (new Date).getTime(),
paths : {
"jquery": "vendor/jquery-1.8.2.min",
"bootstrap": "vendor/bootstrap.min",
"underscore": "libs/underscore-min",
"backbone": "libs/backbone-min",
"template": "libs/template",
"gmaps": "http://maps.google.com/maps/api/js?v=3&sensor=false"
},
shim: {
'backbone': {
deps: ['jquery', 'underscore'],
exports: 'Backbone'
},
'underscore': {
exports: '_'
},
'bootstrap': {
deps: ['jquery']
},
'gmaps': {
deps: ['jquery']
},
'main':{
deps: ['jquery','gmaps']
}
}
});
require(["main"], function (main) {})
Run Code Online (Sandbox Code Playgroud)
但是当我尝试实例化我得到的地理编码器时,在main.js里面,undefined不是函数"错误.
var geocoder = new google.maps.Geocoder();
Run Code Online (Sandbox Code Playgroud)
任何想法我可能做错了什么?
我正在将Require.js与Angular.js结合使用.
某些控制器需要巨大的外部依赖性,而其他控制器则不需要,例如,FirstController需要Angular UI Codemirror.这是额外的135 kb,至少:
require([
"angular",
"angular.ui.codemirror" // requires codemirror itself
], function(angular) {
angular.module("app", [ ..., "ui.codemirror" ]).controller("FirstController", [ ... ]);
});
Run Code Online (Sandbox Code Playgroud)
每次我的页面加载时我都不想要包含指令和Codemirror lib,只是为了让Angular满意.
这就是为什么我现在只在路线被击中时加载控制器,就像这里所做的那样.
但是,当我需要类似的东西时
define([
"app",
"angular.ui.codemirror"
], function(app) {
// ui-codemirror directive MUST be available to the view of this controller as of now
app.lazy.controller("FirstController", [
"$scope",
function($scope) {
// ...
}
]);
});
Run Code Online (Sandbox Code Playgroud)
如何告诉Angular ui.codemirror在app模块中注入模块(或任何其他模块)?
我不在乎它是否是一种完成此操作的hackish方式,除非它涉及修改外部依赖项的代码.
如果它有用:我正在运行Angular 1.2.0.
有没有办法访问require.js的所有已加载模块?
背景:
我想init()在加载所有这些函数后自动调用我的javascript-modules函数,请参阅require.js + backbone.js:如何构造具有初始化函数的模块?
如果没有require.js,我会遍历我自己的模块存储并调用每个init()函数.
我现在想用require.js做这件事.我知道调用my_custom_init_function_favoritecolor_petname_love123每个加载的模块(包括外部库)是危险的.我希望这比手动保持所有模块的列表(以及这些模块的要求)是最新的麻烦少.忘记一个模块init()比具有我的自定义函数名的第三方库更有可能(尽管后者可能更难调试).
或者有没有人更好地了解如何实现这一目标?
我正在使用require.js和r.js打包我的AMD模块.我通过以下语法使用jquery和requirejs:
<script data-main="/js/client" src="/js/external/require-jquery.js"></script>
Run Code Online (Sandbox Code Playgroud)
这一切都适用于前后包装,但我遇到了很多问题,其中chrome和mobile safari持有client.js的缓存版本.我想为client.js添加一个缓存器,但我似乎无法弄清楚如何使用上面的语法来实现它.
我尝试了一些变化:
<script data-main="js/client.js?b=busted" src="/js/external/require-jquery.js"></script>
Run Code Online (Sandbox Code Playgroud)
但现在需要尝试从而获取client.js /,而不是/js404s.
我也尝试过添加
urlArgs : "bust="+new Date().getTime()
Run Code Online (Sandbox Code Playgroud)
到require.config,但似乎没有效果.
我也尝试添加相同的值app.build.js,但当它在那里时,r.js不再连接我的js文件,只是uglifies它们.
破坏require.js数据主脚本缓存的正确语法是什么?