как избежать длинных пространств имен в Javascript - PullRequest
1 голос
/ 10 марта 2012

Мы начинаем новый проект, и мы решили использовать javascript "" пространства имен "" для организации нашего клиентского кода. Дело в том, что мы заметили, что мы можем очень легко покончить с очень длинными пространствами имен, которые трудно запомнить, например

myProject.components.myComponent.doSomethig ();

Есть ли лучший способ сделать это или создать какой-нибудь "псевдоним" как-нибудь?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 10 марта 2012

В JavaScript вы можете создавать ярлыки для ссылок на длинные пространства имен

 var myComp = myProject.components.myComponent;
 myComp.func1();

Это только ссылка.Вы можете сделать это с другими длинными именами и писать меньше так:

 var getEl = document.getElementById, 
     myEl = getEl('divId');

Также вы можете организовать свой код с помощью RequireJS , чтобы организовать свой код

// file:myProject / components / myComponent.js

 define(function(){
       var myComponent ={};
       myComponent.func1 = function(){
           ...
       }
       return myComponent;
 });

// file: myProject / main.js

 require(['myProject/components/myComponent',  'myProject/components/myComponent2'], 
 function(comp1, comp2){
         var main = {};
         main.init = function() {
             ...
             comp1.func1();
         }
 });

// file: myProject / index.html

 <script src="libs/require.js" data-main="myProject/main"></script>
1 голос
/ 10 марта 2012

Если вы используете функции видимости вокруг кода вашего модуля (а если нет, то должны), вы можете легко создавать локальные псевдонимы в качестве переменных, совместно используемых всеми функциями в данном модуле.

Например, код, определяющий компонент myComponent:

(function() {
    var comp = {};

    // Export our component
    myProject.components.myComponent = comp;

    // add things to `comp`; since `comp` and `myProject.components.myComponent`
    // refer to the same object, adding to `comp` is adding to the one object
    // they both refer to and so you can access those things via either reference
})();

Аналогично, если вы пишете код приложения, который использует несколько компонентов:

(function() {
    var thisComp = myProject.components.thisComponent,
        thatComp = myProject.components.thatComponent;

    // Use `thisComp` and `thatComp`
})();
0 голосов
/ 10 марта 2012

Вы всегда можете сохранить пространство имен в локальной переменной:

var myComponent = myProject.components.myComponent;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...