- Notifications
You must be signed in to change notification settings - Fork125
TODO
hot-module-replacement-with-webpack
imports-loader and window.jQuery
support for path-to-regexp
moment.js
so i have a couple of things i think should probably be in the docs: 1) best practice for shimming browser js (i.e. a jquery plugin), 2) how to configure for altjs languages, 3) how to configure webpack for browser package managers like bower.
- =>http://webpack.github.io/docs/shimming-modules.html
- => How to write a loader;http://webpack.github.io/docs/using-loaders.html
- => Vendor ModulesSome of them are still work in progressdontkry may be a good start for 3)
varmyRequire=require("enhanced-require")(module,{// options});// startup your applicationmyRequire("./startup");
Than you can use them:
// use loadersvarfileContent=require("raw!"+__filename);// use loaders automaticallyvartemplate=require("./my-template.jade");// you need to pass this options:// { module: { loaders: [ { test: /\.jade$/, loader: "jade" } ]}}varhtml=template({content:fileContent});// use require.contextvardirectoryRequire=require.context("raw!./subdir");vartxtFile=directoryRequire("./aFile.txt");// use require.ensurerequire.ensure(["./someFile.js"],function(require){varsomeFile=require("./someFile.js");});// use AMD definerequire.define(["./aDep"],function(aDep){aDep.run();});// use AMD requirerequire(["./bDep"],function(bDep){bDep.doSomething();});
require("enhanced-require")(module,{hot:true,// enable hot code replacementwatch:true// watch for changes})("./startup");
For hot code reloading you need to follow thehot code reloading spec.
varer=require("enhanced-require");it("should read the config option",function(done){varsubject=er(module,{substitutions:{// specify the exports of a module directly"../lib/config.json":{"test-option":{value:1234}}},substitutionFactories:{// specify lazy generated exports of a module"../lib/otherConfig.json":function(require){// export the same object as "config.json"returnrequire("../lib/config.json");}}})("../lib/subject");varresult=subject.getConfigOption("test-option");should.exist(result);result.should.be.eql({value:1234});});
There are two main differences between CommonJS and RequireJS.
The first one is how modules are defined.While CommonJS uses its own method (seen above), RequireJS implementsthe AMD (Asynchronous Module Definitions) specification.
The second difference is how dependencies are loaded.While CommonJS expectsrequire calls to behave synchronously,RequireJS loads its modules asynchronously, behaving moreaccordingly as how the browser works.This heavily marks where to use each of these two module systems,CommonJS is used mainly in server JavaScript implementations (Nodejs),while RequireJS is headed to be used in the browser.
webpack 👍