node.js - 使用图板更改 Google Analytics(分析)代码

标签 node.js flatiron.js

有没有办法使用 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 中解决此问题的常用方法是什么?

最佳答案

Plates 的想法很棒,但还远未完成。这是一个解决方案。

app.js

var fs = require('fs'); varplates = require('plates'); var flatiron = require('熨斗'); 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>

另一种方法就是 string.replace() ,如下所示:

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

this.res.html(html);

看看cheerio为了支持。它就像任何其他 css 选择器和 dom 操作前端库,只是后端。

关于node.js - 使用图板更改 Google Analytics(分析)代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727266/

相关文章:

javascript - 我无法使用 page.goto() 从一个页面转到另一个页面 - Puppeteer

node.js - 无法添加未在 mongoose 模式中定义的参数

Apache 缓存问题

node.js - 从AWS lambdas访问kubernetes集群中的Mongo副本

javascript - 使用 Mocha : app. 日志测试 flatiron cli 应用程序未定义?

javascript - 如何使用 flatiron Node 框架创建 Web 应用程序框架?

javascript - flatiron.js/union - 在哪里放置 app.use() 配置?