javascript 模塊化

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

一直好奇像node.js,require.js的模塊化是怎么做的,在看了《你不知道的javascript》后,對js的模塊化有了一些簡單的了解。這本書真的還不錯。

書里講述了js的模塊化的原理 和 ?現代js實現模塊化的簡單的寫法,下面直接上代碼:

<script type="text/javascript">
?? ??? ?<!-- javascript 中的模塊化 -->
?? ??? ?<!-- 創建定義模塊函數 -->?? ?
?? ??? ?var Module = (function(){
?? ??? ??? ?var modules = {};

?? ??? ??? ?//創建模塊
?? ??? ??? ?function define(name,deps,fun){//name:模塊名稱,deps:依賴模塊,func: 模塊方法

?? ??? ??? ??? ?for (var i = 0; i < deps.length; i++) {
?? ??? ??? ??? ??? ?deps[i] = modules[deps[i]];?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?modules[name] = fun.apply(fun,deps); //這里依賴注入的關鍵,把依賴的模塊傳給fun

?? ??? ??? ?}

?? ??? ??? ?//模塊的get()
?? ??? ??? ?function get(name){
?? ??? ??? ??? ?return modules[name];
?? ??? ??? ?}

?? ??? ??? ?return {
?? ??? ??? ??? ?define:define,
?? ??? ??? ??? ?get:get
?? ??? ??? ?};

?? ??? ?})();

?? ??? ?//定義一個行為模塊(喝酒)
?? ??? ?Module.define("drunk",[],function(){

?? ??? ??? ?function drunking(){
?? ??? ??? ??? ?console.log("can drunk !");
?? ??? ??? ?}

?? ??? ??? ?return {
?? ??? ??? ??? ?drunking:drunking
?? ??? ??? ?};
?? ??? ?});

?? ??? ?//定義一個模塊,創建學生類
?? ??? ?Module.define("student",["drunk"],function(drunk){

?? ??? ??? ?function CreateStudent(name,age,isDrunk){
?? ??? ??? ??? ?var obj = new Object();
?? ??? ??? ??? ?obj.name = name;
?? ??? ??? ??? ?obj.age = age;
?? ??? ??? ??? ?obj.eat = function(){
?? ??? ??? ??? ??? ?console.log("Everyone can eat !")
?? ??? ??? ??? ?};
?? ??? ??? ??? ?if (isDrunk) {
?? ??? ??? ??? ??? ?obj.du = drunk.drunking;
?? ??? ??? ??? ?} else {
?? ??? ??? ??? ??? ?obj.du = function(){
?? ??? ??? ??? ??? ??? ?console.log("can not drunk !");
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ??? ?return obj;
?? ??? ??? ?}
?? ??? ??? ?return {
?? ??? ??? ??? ?createStudent:CreateStudent
?? ??? ??? ?};
?? ??? ?});

????? ? //測試

?? ??? ?var s1 = Module.get("student").createStudent("lee",12);
?? ??? ?s1.eat();
?? ??? ?s1.du();

轉載于:https://my.oschina.net/u/3229305/blog/974028

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258389.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258389.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258389.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AD20學習筆記5---PCB設計規則設置及PCB手工布線

前言&#xff1a; 本文學習視頻是B站點擊率第一的凡億教育《Altium Designer 20 19&#xff08;入門到精通全38集&#xff09;四層板智能車PCB設計視頻教程》&#xff0c;視頻地址&#xff1a;Altium Designer 20 19&#xff08;入門到精通全38集&#xff09;四層板智能車PCB設…

理論物理極礎9:相空間流體和吉布斯-劉維爾定理

萊尼喜歡看河&#xff0c;尤其喜歡看漂浮物順流而下。他猜想漂浮物如何穿過礁石&#xff0c;如何陷入漩渦。但是河流整體&#xff0c;水量&#xff0c;流切變&#xff0c;河的分流和匯聚&#xff0c;這是萊尼所看不到的。 相空間流體 在經典力學里&#xff0c;注視一個特別的初…

ComponentName的意思

ComponentName是用來打開其它應用程序中的Activity或服務的。 使用方法&#xff1a; Intent inew Intent();i.setComponent(new ComponentName(String packageName,String activityName ));startActivity(i); 轉載于:https://www.cnblogs.com/hrhguanli/p/3861243.html

nginx沒有worker進程_如何優雅地關閉worker進程?

點擊上方“武培軒”&#xff0c;選擇“設為星標”技術文章第一時間送達&#xff01;之前我們講解 Nginx 命令行的時候&#xff0c;可以看到 Nginx 停止有兩種方式&#xff0c;分別是 nginx -s quit 和 nginx -s stop&#xff0c;其中 stop 是指立即停止 Nginx&#xff0c;而 qu…

[Python3]Python面向對象的程序設計

[Python3]Python面向對象的程序設計 一、面向對象的程序設計的由來 1.第一階段&#xff1a;面向機器&#xff0c;1940年以前 最早的程序設計都是采用機器語言來編寫的,直接使用二進制碼來表示機器能夠識別和執行的指令和數據。 簡單來說,就是直接編寫 0 和 1 的序列來代表程序語…

RC電路輸出波形的時域與頻域分析

RC一階電路為例進行時域和頻域分析&#xff0c;激勵Us為方波&#xff0c;以Uc作為輸出的波形相當于積分電路的輸出曲線&#xff0c;以Ur作為輸出的波形相當于微分電路的輸出曲線。電容對輸入電壓具有平滑作用&#xff0c;平滑程度與時間常數有關&#xff0c;衰減程度與帶寬設計…

JQuery之編寫彈窗

演示地址&#xff1a;http://sandbox.runjs.cn/show/irefekbs <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style>*{ margin: 0; padding: 0;}#login { z-index:9999…

[ext/iconv/iconv.lo] Error 1

辦法1&#xff1a; wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz tar -zxvf libiconv-1.13.1.tar.gz cd libiconv- 1.13.1 ./configure make make install 辦法2&#xff1a; wget http://down.wdlinux.cn/in/iconv_ins.sh sh iconv_ins.sh轉載于:https:/…

多麥克風做拾音的波束_麥克風陣列是什么 有哪些關鍵技術?

麥克風陣列是什么 有哪些關鍵技術&#xff1f;亞馬遜Echo和谷歌Home爭奇斗艷&#xff0c;除了云端服務&#xff0c;他們在硬件上到底有哪些差異&#xff1f;我們先將Echo和Home兩款音箱拆開來看&#xff0c;區別最大的還是麥克風陣列技術。Amazon Echo采用的是環形61麥克風陣列…

如何用AD20打開ddb文件

用AD20直接打開ddb文件會報錯&#xff0c;在AD20中使用導入向導才是ddb文件的正確打開方式。 1.用AD20直接打開ddb文件的報錯提示 2.使用導入向導打開ddb文件 除了以下兩處關鍵設置的地方&#xff0c;一路next就行。

Codeforces Round #419 (Div. 2)

1.題目A&#xff1a;Karen and Morning 題意&#xff1a; 給出hh:mm格式的時間&#xff0c;問至少經過多少分鐘后&#xff0c;該時刻為回文字符串&#xff1f; 思路&#xff1a; 簡單模擬&#xff0c;從當前時刻開始&#xff0c;如果hh的回文rh等于mm則停止累計。否則&#xff…

Java NIO 系列教程

Java NIO&#xff08;New IO&#xff09;是從Java 1.4版本開始引入的一個新的IO API&#xff0c;可以替代標準的Java IO API。本系列教程將有助于你學習和理解Java NIO。感謝并發編程網的翻譯和投遞。 &#xff08;關注ITeye官微&#xff0c;隨時隨地查看最新開發資訊、技術文章…

使用語句修改數據表結構

查詢表信息&#xff1a; sp_help dbo.T_User; 修改columnName 字段為空 alter table dbo.T_User alter column columnName datetime null; 修改columnName 默認值 ALTER TABLE dbo.T_User ADD CONSTRAINT [DF_T_User_columnName ] DEFAULT 0 FOR [columnName ];轉載于:https://…

變換上三角矩陣_關于馬爾可夫矩陣的一些個人研究成果、思考過程及相關解釋...

在幾個月以前&#xff0c;曾經有一位知乎好友邀請我回答一個問題&#xff1a;“如何證明馬爾可夫矩陣至少存在一個所有分量均不小于零的特征向量。”當時我思考了大概半個小時&#xff0c;給出了嚴謹的證明。事后由該問題引發我至少三度思考&#xff0c;對于此問題&#xff0c;…

Multisim14仿真入門筆記

本文是B站北京郵電大學鄧剛老師《Multisim仿真入門》的學習筆記&#xff0c;視頻地址&#xff1a;【電路仿真】Multisim仿真入門&#xff08;北京郵電大學 鄧剛主講&#xff09;_嗶哩嗶哩_bilibili。 1.Multisim簡介 Multisim14是一種專門用于電路仿真和設計的軟件之一&#x…

你研究過單例么?這樣寫單例效率最高.

首先,小湯我在這里,要表示一下歉意,本來是想要每天寫一篇Swift的學習小tip的,無奈近期手頭的money花差的差點兒相同了,僅僅能迫不得已,出門找工作去了,沒能履行承諾之處還請大家見諒. 那么,廢話不多說了,開始我們今天的主題: 單例 ! 單例介紹: 說到單例,大家應該都不陌生,在傳說…

office365在win7上使用訂閱+win7在線升級win10就用它(親測有效)

前言&#xff1a; 作為office365的重度使用用戶&#xff0c;最近兩天訂閱到期&#xff0c;續訂之后一直顯示無法驗證此訂閱&#xff08;僅查看&#xff09;&#xff0c;office365未經授權&#xff0c;大多數功能已停用&#xff0c;狂暈&#xff01;&#xff01;&#xff01; 在…

HDU 4414 Finding crosses(搜索)

題目鏈接&#xff1a;HDU 4414 Finding crosses 【題目大意】 給你一張n*n的圖&#xff0c;由o #這兩個元素組成&#xff0c;讓我們找其中有多少十字架。 十字架由#構成 十字架的縱向長度等于橫向長度 &#xff0c; 且這個長度要為大于等于3的奇數。 構成十字架的#周圍不能有多…

mongodb檢查點_Mongodb 日志原理和操作

日志原理&#xff1a;WiredTiger使用檢查點在磁盤上提供一致性數據視圖&#xff0c;并允許MongoDB從上一個檢查點恢復。 但是&#xff0c;如果MongoDB在檢查點之間意外退出&#xff0c;則需要使用日志記錄來恢復上次檢查點之后發生的信息。通過日志記錄&#xff0c;恢復過程如下…

UILabel 根據text的內容來調整大小

有時候&#xff0c;在UILabel的text過長的時候&#xff0c;我們需要讓label進行自適應大小&#xff0c;之前我們必須要獲得這個UILabel的size&#xff0c;這便是根據text的內容和性質&#xff08;字體&#xff0c;行間距等決定的&#xff09;。 在ios7中&#xff0c;使用boundi…