1

Plates を使用して、テンプレートに含まれる Google Analytics コードを変更する方法はありますか?

たとえば、次のテンプレートの場合:

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <script id="googleAnalytics">
        var _gaq=[['_setAccount','GA_ACCOUNT_CODE'],['_trackPageview']];
        (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
        g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
        s.parentNode.insertBefore(g,s)}(document,'script'));
        </script>
    </body>
</html>

GA_ACCOUNT_CODEコードが実行される環境に応じて使い分けたいと思います。

これはプレートで可能ですか?そうでない場合、NodeJS と Flatiron でこの問題を解決する一般的な方法は何ですか?

4

1 に答える 1

0

Plates のアイデアは素晴らしいですが、完全にはほど遠いものです。これが解決策です。

app.js

var fs = require('fs'); var プレート = require('プレート'); var flatiron = require('flatiron'); var app = flatiron.app;

app.use(flatiron.plugins.http);

app.router.get('/', function(){
    var html = fs.readFileSync('index.html', 'utf-8');
    var map  = plates.Map();
    var data = {"GA_ACCOUNT_CODE": "YOUR_CODE_FROM_CONFIG"}

    map.where('data-ga').is('GA_ACCOUNT_CODE').insert('GA_ACCOUNT_CODE');
    html = plates.bind(html, data, map);
    this.res.html(html);
});

app.start(3000);

index.html

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <script id="googleAnalytics" data-ga="GA_ACCOUNT_CODE">
            var GA_ACCOUNT_CODE = document.getElementById('googleAnalytics').getAttribute('data-ga');

            var _gaq=[['_setAccount',GA_ACCOUNT_CODE],['_trackPageview']];
            (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
            g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
            s.parentNode.insertBefore(g,s)}(document,'script'));
        </script>
    </body>
</html>

もう 1 つの方法は、次のような string.replace() です。

var html = fs.readFileSync('index.html', 'utf-8');
html     = html.replace('GA_ACCOUNT_CODE', 'YOUR_CODE_FROM_CONFIG');

this.res.html(html);

支援のためにチェリオを見てください。これは、他の CSS セレクターや dom 操作フロントエンド ライブラリと同様に、単なるバックエンドです。

于 2013-02-19T10:29:00.507 に答える