1. 程式人生 > >Require.js入門講解(一)

Require.js入門講解(一)

  1. test:function(a){

  2. console.log(a+"你好!");

  3. a.f();

  4. info();

  5. }

  6. }

  7. });

 也可通過如下方式定義模組,其中require,均為外部傳入的模組命名物件

  1. define(function(require,$){

  2. var data={text:""};

  3. var obj=new Object({

  4. c1:10,

  5. text: function (str) {

  6. data.text=str;

  7. },

  8. doEach:function(){

  9. alert(data.text);

  10. },

  11. doNext:function(){

  12. alert(this.text);

  13. }

  14. });

  15. //==========num 相當於是匿名函式function()的返回結果================

  16. var num=(function(){

  17. var m1=function(a,b){

  18. return a+b;

  19. }

  20. var m2=function(a,b){

  21. return a-b;

  22. }

  23. //===========返回一個物件======================

  24. return {m1:m1,m2:m2};

  25. })();

  26. //obj.c2=1000;

  27. var objTmp={c2:1000,showC2:function(){

  28. obj.c2=obj.c2+1000;

  29. alert(obj.c2);

  30. }};

  31. obj=$.extend(obj,objTmp);

  32. var obj1=(function(mod){

  33. mod.showString=function()

  34. {

  35. alert("this is a string");

  36. }

  37. return mod;

  38. //===========下面的obj相當於是function(mod)的傳入引數=====================

  39. })(obj);

  40. return {

  41. obj:obj,

  42. num:num,

  43. data:data

  44. }

  45. }(require,$));

四、應用模組

使用require函式載入已定義的模組,示例程式碼如下:

  1. //=============命名全域性物件app==========================

  2. var app;

  3. //=============匯入jquery模組,命名為物件$============================

  4. require(["jquery"],function($){

  5. console.log("the jquery load succes!");

  6. //=============匯入app目錄下的app模組檔案,將其命名為app1變數===========

  7. require(["app/app"],function(app1){

  8. function setClickEvent(btnName)

  9. {

  10. app.obj.text(btnName);

  11. //===========好像在jquery中不能向一般為document 新增元素事件 事件==事件函式的方式增加事件響應,而是事件(事件響應函式);===切記切記

  12. $(btnName).click(app.obj.doEach);

  13. $(btnName).text(btnName);

  14. }

  15. //======回撥函式中的引數app就是建立的模組物件本身=======

  16. var tmp={

  17. sex:"male",

  18. old:34

  19. };

  20. //=============賦值全域性物件====================

  21. app=$.extend(app1,tmp);

  22. //=============執行全域性物件方法==================

  23. app.obj.doEach();

  24. //===============增加ready事件相應函式=================================

  25. $(document).ready(function(){

  26. //===============直接應用同一模組中的方法======================

  27. setClickEvent("#btn1");

  28. setClickEvent("#btn2");

  29. setClickEvent("#btn3");

  30. });

  31. /*require(["app/addEvent"],function(event){

  32. console.log("event add");

  33. });*/

  34. });

  35. });

require()函式接受兩個引數。第一個引數是一個數組,表示所依賴的模組;第二個引數是一個回撥函式,當前面指定的模組都載入成功後,它才會被呼叫。

五、完整例子

js目錄結構如下:

html檔案:

  1. <!DOCTYPE html>

  2. <html lang="en">

  3. <head>

  4. <meta charset="UTF-8">

  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">

  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">

  7. <title>Document</title>

  8. </head>

  9. <body>

  10. <script src="js/require.js" data-main="app.js"></script>

  11. </body>

  12. </html>

主模組js:

  1. require.config({

  2. //By default load any module IDs from js/

  3. baseUrl: 'js',

  4. //except, if the module ID starts with "pb"

  5. paths: {

  6. pb: '../pb'

  7. },

  8. shim: {

  9. 'world': {

  10. deps:['animalWorld'],

  11. // use the global 'Backbone' as the module name.

  12. exports: 'world'

  13. }

  14. }

  15. });

  16. require(['cat','dog','world'], function (cat,dog,world) {

  17. world.world();

  18. cat.say();

  19. dog.say();

  20. });

animial.js

  1. define([], function() {

  2. 'use strict';

  3. function _showName(name){

  4. console.log(name);

  5. }

  6. return {

  7. say(words){

  8. console.log(words);

  9. },

  10. showName(name){ //練習私有方法

  11. _showName(name);

  12. }

  13. }

  14. });

cat.js:

  1. define([

  2. 'animal'

  3. ], function(animal) {

  4. 'use strict';

  5. return {

  6. say(){

  7. animal.say("喵喵");

  8. animal.showName("貓");

  9. }

  10. }

  11. });

dog.js

  1. define([

  2. 'animal'

  3. ], function(animal) {

  4. 'use strict';

  5. return {

  6. say(){

  7. animal.say("汪汪");

  8. animal.showName("狗");

  9. }

  10. }

  11. });