0

私はこの基本的なkoa v2アプリを持っています。このアプリでは、テンプレートリテラルを表示エンジンとして実装しようとしています。 ./views/index.jsstateの値をapp.jsからどのように設定できますか?CommonJSモジュール内のオブジェクトの値を変更できないのはなぜですか?

私の問題は、私はのは、私は<title></title>タグの間titleオブジェクト値を含めたいとしましょう.views/partials/mainTop.jsファイルにダウンctx.body = index.render({})からすべての方法をオブジェクト値をプッシュするということです。これを達成する方法はありますか.views/partials/mainTop.jsapp.jsに?ハンドルバーやnunjucksテンプレートの場合、テンプレートリテラルと同様のことを達成したい。

./app.js

const index = require('./views/index'); 
const app = new Koa(); 

app.use(ctx => { 
    index.state = { 
    foo: 'bar', 
    }; 
    ctx.body = index.render({ 
    title: 'Template Literals', 
    description: 'Vanilla JS rendering', 
    }); 
}); 

app.listen(3000); 

./views/index.js

const main = require('./layouts/main'); 

let state = {}; 
module.exports.state = state; 
console.log(state); // returning an {} empty object, expected => { foo: "bar" } 

module.exports.render = (obj) => { 
    return main.render(` 
    <p>Hello world! This is HTML5 Boilerplate.</p> 
    ${JSON.stringify(obj, null, 4)}} 
    ${obj.title} 
    `); 
}; 

./views/layouts/main.js

const mainTop = require('../partials/mainTop'); 
const mainBottom = require('../partials/mainBottom'); 

module.exports.render = (content) => { 
    return ` 
    ${mainTop.render} 

    ${content} 

    ${mainBottom()} 
    `; 
} 

./views/partials/mainTop.js

もちろん

./views/partials/mainBottom.js

module.exports =() => { 
    return ` 
    ... 
    </body> 
    </html> 
    `; 
} 
+1

不明です。どこでも到達可能なメソッドを定義して値を返すか、最後の手段としてグローバルを使用することができます。 – dandavis

+0

'mainTop'が文字列プロパティを持つオブジェクトとして定義されているのに対して、' mainBottom'が文字列を返す関数として定義されているのはなぜですか? – Bergi

答えて

1

console.log(state); // {}空のオブジェクトを返す、予想=>{ foo: "bar" }

あなたが作成した空のオブジェクト取得している:

  • これはmodule.exports.stateです。 app.jsに割り当てられているオペレーションあなたのローカルstate変数は上書きされませんし、それが参照するオブジェクトも変更されていません。これを行うには、index.jsにindex.state.foo = "bar";を入力する必要があります。
  • オブジェクト/変数は、空のオブジェクトとして作成された直後にログに記録されます。 index.js内の割り当ては、app.useコールバック内で非同期に発生します。 console.logレンダリングメソッド内でとした場合、割り当てがの場合、期待どおりの値が得られます。しかし、その場合はパラメータとして渡すだけです。
関連する問題