JavaScriptの名前空間について興味があって、以下のサイトを参考にして、簡単な名前空間を使ったJavaScriptの実装を行ってみました。
http://qiita.com/kenju/items/0d8f85df205ea4978508
定義した名前空間はこんな感じです。
JavaScript
1var HOGEAPP = { 2 VIEW:{}, 3 MODEL:{}, 4 CONF{} 5};
こんな感じでファイルを分割して書いてます。
init.js
lang
1var HOGEAPP = { 2 VIEW:{}, 3 MODEL:{}, 4 CONF{} 5}; 6 7HOGEAPP.init = function(){ 8 //アプリの初期化処理 9};
view.js
lang
1HOGEAPP.VIEW.addEvent = function(){ 2 //viewに関する処理 3};
model.js
lang
1HOGEAPP.MODEL.getData = function(){ 2 //modelに関する処理 3};
conf.js
lang
1HOGEAPP.CONF.getConfig = function(){ 2 //confに関する処理 3};
これらのファイルを、grantのconcatというのを使って1つのファイルにしています。
chromeで読み込んで実行したら、なぜかHOGEAPP.CONF.getConfig = function(){
の箇所でエラーになっていました。
どうも、先に名前空間の定義をしていないため、「HOGEAPP.CONF」が見つからないよって言われているんです。
先に名前空間の定義をしちゃえばいいんですが、ファイルを結合しているため、ファイルの先頭に名前空間の定義を持ってくる事が出来ません。
このような場合、どうやって先に名前空間の定義を持ってくるのでしょうか?
HTMLソースに書いておけば一応可能かもしれませんが、綺麗な方法とも思えません。
別のJavaScriptファイルを先に読み込んでおくのでしょうか?それだとせっかくファイルを結合して1つにしているのに無駄になる気がします。
皆様はどうやっているのでしょうか?
追記です。
Gruntfile.jsの記述は以下の通りです。
JavaScript
1module.exports = function (grunt) { 2 var pkg = grunt.file.readJSON('package.json'); 3 grunt.initConfig({ 4 concat: { 5 files: { 6 // 元ファイルの指定。 7 src : 'src/*.js', 8 // 出力ファイルの名前・パス指定 9 dest: 'test/lib/hogeapp.js' 10 } 11 } 12 }); 13 // プラグインのロードやタスクの登録 14 grunt.loadNpmTasks('grunt-contrib-concat'); 15 16};
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/14 03:51
2016/09/14 04:12