javascript - 需要输入 URL 模板占位符查找和替换功能

标签 javascript node.js lodash

用于查找并替换 URL 模板中占位符的代码,如下所示

URL 占位符,例如 {cookies:partnumber}

输入

 var url = 'http://localhost:3000/product/{cookies:partnumber}/user/{users:userId}';

输出

http://localhost:3000/product/100/user/99

Node.js 代码

'use strict';

var _ = require('lodash');

var url = 'http://localhost:3000/product/{cookies:partnumber}/user/{users:userId}';

function parameters(){}

parameters.prototype.getCookies = function(key) {
    return '100';
};

parameters.prototype.getUsers = function(key) {
    return '99';
};


var splitURL = url.split('/');

_.map(splitURL,function(obj, index){

    if(obj.match(/{*}/)){
        var k = obj.split(':');
        var fn = 'get'
            .concat(k[0]
                .substring(1)
                .toString()
                .charAt(0)
                .toUpperCase()
                .concat(k[0]
                    .slice(2)
                )
            ).trim();
        var key = k[1].substring(0,k[1].length-1);
        var p = new parameters();
        if (fn in p && typeof p[fn] === "function") {
            splitURL[index] =  p[fn](key);
        }
    }
});

console.log(splitURL.join('/'));

如果有任何其他方法来实现相同并优化代码,请提出建议。

最佳答案

既然您已经在使用 lodash,为什么不使用 _.template

关于javascript - 需要输入 URL 模板占位符查找和替换功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29439401/

相关文章:

javascript - 如何在 javascript 定时器/循环中运行 php 代码

javascript - 多条件过滤

javascript - 如果需要,删除 CSS 选择器及其相关属性

javascript - Amplify.service.api.get 返回sampleCloudAPI 不存在

javascript - 如何使用 lodash 返回嵌套数组?

javascript - 如何在 lodash 中查找 A 中的所有元素而不是 B 中的所有元素?

javascript - 使用 .map() 在 jquery 中分组

node.js如何在中间件中从redis数据库中获取数据

php - Unirest Node 模块无法从PHP获取POST数据

javascript - 每次生产 Kafka 消息时都需要连接吗?