标签: requirejs

如何禁用警告'define'未使用JSHint和RequireJS定义

我在我的项目中使用RequireJS AMD.当我在我的项目上运行jshint时,它会抛出错误

在AMD Scripts中

 'define' is not defined.
Run Code Online (Sandbox Code Playgroud)

在摩卡测试案例中

 'describe' is not defined.
 'it' is not defined.
Run Code Online (Sandbox Code Playgroud)

如何在jshint中删除此警告?

javascript amd requirejs jshint

108
推荐指数
6
解决办法
6万
查看次数

组织jQuery/JavaScript代码的最佳方式(2013)

问题

这个答案之前已经得到了回答,但已经过时而且不是最新的.我在一个文件中有超过2000行代码,而且我们都知道这是不好的做法,特别是当我查看代码或添加新功能时.我想更好地组织我的代码,无论是现在还是将来.

我应该提一下,我正在构建一个工具(不是一个简单的网站),它有许多按钮,UI元素,拖放,动作监听器/处理程序和全局范围内的功能,其中几个监听器可以使用相同的功能.

示例代码

$('#button1').on('click', function(e){
    // Determined action.
    update_html();
});

... // Around 75 more of this

function update_html(){ .... }

...
Run Code Online (Sandbox Code Playgroud)

更多示例代码

结论

我真的需要组织这个代码以便最好地使用,而不是重复自己,并能够添加新功能和更新旧功能.我将自己做这件事.一些选择器可以是100行代码,其他的是1.我看了一下,require.js发现它有点重复,实际上编写了比需要更多的代码.我对任何符合此标准的可能解决方案持开放态度,并且链接到资源/示例始终是一个优势.

谢谢.

javascript jquery design-patterns requirejs backbone.js

102
推荐指数
4
解决办法
4万
查看次数

Requirejs domReady插件vs Jquery $(文档).ready()?

我正在使用RequireJS并且需要在DOM上初始化一些东西.现在,RequireJS提供了domReady插件,但我们已经有了jQuery $(document).ready(),因为我需要jQuery,所以我可以使用它.

所以我有两个选择:

  1. 使用domReady插件:

    require(['domReady'], function (domReady) {
        domReady(function () {
            // Do my stuff here...
        });
    });
    
    Run Code Online (Sandbox Code Playgroud)
  2. 用途$(document).ready():

    $(document).ready(function() {
        // Do my stuff here...
    });
    
    Run Code Online (Sandbox Code Playgroud)

我应该选择哪一个,为什么?

这两个选项似乎都按预期工作.我对jQuery没有信心,因为RequireJS正在做它的魔力; 也就是说,由于RequireJS会动态添加脚本,我担心在加载所有动态请求的脚本之前可能会出现DOM.然而,只有domReady当我已经需要jQuery时,RequireJS才会增加额外JS的负担.

问题

  • 为什么domReady在我们可以使用jQuery时,RequireJS会提供一个插件$(document).ready();?我没有看到包含另一个依赖项的任何优点.
  • 如果只是为了满足需求,那么为什么不提供一个跨浏览器的AJAX呢?

据我所知,domReady文档准备好后,将不会获取或执行需要的模块,并且您也可以执行同样需要jQuery的模块:

require(['jQuery'], function ($) {
    $(document).ready(function () {
        // Do my stuff here...
    });
});
Run Code Online (Sandbox Code Playgroud)

为了更清楚我的问题:要求domReady或之间有什么区别jQuery

html javascript jquery document-ready requirejs

100
推荐指数
3
解决办法
3万
查看次数

要求使用shim配置的原因和时间

我从这里读apirequirejs文件

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
                //libraries that support it, and do other cleanup.
                //However, plugins for those libraries may still want
                //a global. "this" for the …
Run Code Online (Sandbox Code Playgroud)

javascript amd requirejs

96
推荐指数
2
解决办法
7万
查看次数

如何在没有.d.ts的情况下使用typescript的外部非打字稿库?

我在我的.html文件中定义了这些:

<script type="text/javascript" src="bower_components/tree.js/tree.min.js"></script>
<script type="text/javascript" src="bower_components/q/q.js"></script>
<script type="text/javascript" src="test.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后在test.js中:

 var myTree = Tree.tree({})
Run Code Online (Sandbox Code Playgroud)

但是打字稿错误地说:"找不到名字'树'"

我也尝试编译--module amd并放置import Tree = require("model/tree");在test.js文件的顶部,但它再次出错:Cannot find external module 'model/tree'.但显然它应该是一个有效的导入,请参见此处定义它:https://github.com/marmelab/tree的.js /斑点/主/ SRC/main.js

不是想写.d.ts文件为每一个外部JavaScript文件,我想使用,是严重打字稿什么要我做什么?

requirejs typescript

93
推荐指数
2
解决办法
6万
查看次数

如何使用requirejs加载jQuery插件

我正在使用requirejs + jquery,我想知道是否有一种聪明的方法可以使jQuery插件与require一起使用.

例如,我正在使用jQuery-cookie.如果我理解正确,我可以创建一个名为jquery-cookie.js的文件,并在里面做

define(["jquery"], // Require jquery
       function($){
// Put here the plugin code. 
// No need to return anything as we are augmenting the jQuery object
});
requirejs.config( {
    "shim": {
        "jquery-cookie"  : ["jquery"]
    }
} );
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以像jQuery那样做,这是这样的:

if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
    define( "jquery", [], function () { return jQuery; } );
}
Run Code Online (Sandbox Code Playgroud)

或者,这是使jQuery插件与requirejs或任何amd兼容的唯一方法

javascript jquery requirejs

87
推荐指数
2
解决办法
5万
查看次数

为什么使用Object.prototype.hasOwnProperty.call(myObj,prop)而不是myObj.hasOwnProperty(prop)?

如果我理解正确,Javascript中的每个对象都继承自Object原型,这意味着Javascript中的每个对象都可以通过其原型链访问hasOwnProperty函数.

在阅读require.js的源代码时,我偶然发现了这个函数:

function hasProp(obj, prop) {
    return hasOwn.call(obj, prop);
}
Run Code Online (Sandbox Code Playgroud)

hasOwn是一个参考Object.prototype.hasOwnProperty.写这个函数是否有任何实际的区别

function hasProp(obj, prop) {
    return obj.hasOwnProperty(prop);
}
Run Code Online (Sandbox Code Playgroud)

既然我们在这,我们为什么要定义这个功能呢?这只是一个快捷方式和本地缓存属性访问(轻微)性能提升的问题,还是我错过了任何可能在没有此方法的对象上使用hasOwnProperty的情况?

javascript prototypal-inheritance hasownproperty requirejs

85
推荐指数
3
解决办法
3万
查看次数

我如何一起使用requireJS和jQuery?

我想使用requireJS,我正在使用jQuery.我不想使用requireJS和jQuery的组合版本,因为我没有使用最新的jQuery版本.使用requireJS的最佳方式是什么?

jquery requirejs

82
推荐指数
3
解决办法
6万
查看次数

Webpack ProvidePlugin vs externals?

我探索使用的想法的WebPackBackbone.js的.

我已经按照快速入门指南了解了Webpack的工作原理,但我不清楚如何加载依赖库,如jquery/backbone/underscore.

它们应该在外部加载<script>吗?或者这是Webpack可以处理的东西,如RequireJS的垫片?

按照的WebPack DOC:垫补模块,ProvidePlugin并且externals似乎与此有关(因此是bundle!装载机的地方),但我不能想出什么时候使用.

谢谢

amd requirejs backbone.js webpack

81
推荐指数
3
解决办法
5万
查看次数

如何使用RequireJS/AMD处理循环依赖?

在我的系统中,我在浏览器中加载了许多"类",每个文件在开发过程中都是单独的文件,并连接在一起进行生产.在加载它们时,它们会在全局对象上初始化一个属性G,如下例所示:

var G = {};

G.Employee = function(name) {
    this.name = name;
    this.company = new G.Company(name + "'s own company");
};

G.Company = function(name) {
    this.name = name;
    this.employees = [];
};
G.Company.prototype.addEmployee = function(name) {
    var employee = new G.Employee(name);
    this.employees.push(employee);
    employee.company = this;
};

var john = new G.Employee("John");
var bigCorp = new G.Company("Big Corp");
bigCorp.addEmployee("Mary");
Run Code Online (Sandbox Code Playgroud)

我没有使用自己的全局对象,而是根据James Burke的建议,考虑让每个类都有自己的AMD模块:

define("Employee", ["Company"], function(Company) {
    return function (name) {
        this.name = name;
        this.company = new …
Run Code Online (Sandbox Code Playgroud)

javascript commonjs requirejs

78
推荐指数
6
解决办法
3万
查看次数