Javascript 如何在jade中使用复杂条件或正则表达式
我遇到了一个有趣的挑战,不知道如何着手解决它。我正在从我的mailchimp中提取订户列表,并在我网站上的成员页面中填充数据。我的注册中有一个字段是“网站或LinkedIn个人资料url” 我想做的是,检查他们是否提供了linkedin地址,如果提供了,请在linkedin成员插件中删除他们的url,如果没有,请使用其他数据创建更简单的个人资料、网站名称、标题等 我的问题是,我不能说jade中的data.websiteField.match(/linkedin/)是否匹配,所以我要么需要将数据传递给我遇到问题的客户端javascript,要么执行其他操作 这是mailchimp返回的数据示例Javascript 如何在jade中使用复杂条件或正则表达式,javascript,node.js,express,pug,Javascript,Node.js,Express,Pug,我遇到了一个有趣的挑战,不知道如何着手解决它。我正在从我的mailchimp中提取订户列表,并在我网站上的成员页面中填充数据。我的注册中有一个字段是“网站或LinkedIn个人资料url” 我想做的是,检查他们是否提供了linkedin地址,如果提供了,请在linkedin成员插件中删除他们的url,如果没有,请使用其他数据创建更简单的个人资料、网站名称、标题等 我的问题是,我不能说jade中的data.websiteField.match(/linkedin/)是否匹配,所以我要么需要将数据传
[ // this first bit is just the fields
[
"email address",
"first name",
"last name",
"role",
"organization",
"headline",
"website",
"areas of interest",
"please email me about:",
"member_rating",
"optin_time",
"optin_ip",
"confirm_time",
"confirm_ip",
"latitude",
"longitude",
"gmtoff",
"dstoff",
"timezone",
"cc",
"region",
"last_changed"
],
[ // and here's the first user
"woop@booomshakala.com", // haha, just hiding some data
"Woop",
"Shak",
"Tester",
"ShakaCo",
"Whooooooper",
"http://linkedin.com/in/costamichailidis", // hit me up sometime
"Creativity, Innovation, Ideas and Science",
"Job Placement, Internships, Recruitment & Retention, Technology & MOOCs, Measurement & Evaluation, Documentation & Dissemination",
2,
"2013-03-28 19:28:55",
"173.52.122.111",
"2013-03-28 19:29:12",
"173.52.122.111",
"40.7648000",
"-73.7775000",
"-5",
"-4",
"America/New_York", "US", "NY", "2013-03-28 19:29:12"
]
]
任何帮助都会震撼
还有,我用的是express。express是否在客户端javascript中提供局部变量?客户端正则表达式
Jade允许您在行首使用-
修饰符执行任意javascript
- if (profile.websiteField.match(/linkedin/)
// render linkedin profile here
- else
// render simple profile here
服务器端正则表达式
我认为在服务器端格式化配置文件信息并将renderLinkedIn
boolean字段设置为true或false会更简单
function displaySignUpPage(req, res) {
var profile = formatMailChimpData()
// profile now looks like
// {
// "email address": "woop@booomshakala.com",
// "first name": "Noah",
// ...
// }
var linkedInRegex = /linkedin/;
profile.renderLinkedIn = linkedInRegex.test(profile.website) // set renderLinkedIn to true or false
// say your jade view is called signUpPage.jade
var pageData = {
title: 'Register',
profile: profile
}
res.render('signUpPage', pageData)
}
function formatMailChimpData() {
var mailChimpData = [
[
"email address",
"first name",
"last name",
"role",
"organization",
"headline",
"website"
// other fields truncated
],
[
"woop@booomshakala.com", // haha, just hiding some data
"Noah",
"Isaacson",
"Tester",
"ShakaCo",
"Whooooooper",
"http://www.linkedin.com/pub/noah-isaacson/59/6a2/553"
]
]
// mailChimp puts the keys as the first entry
var mailChimpFields = mailChimpData[0]
var mailChimpProfile = mailChimpData[1]
// make profile into key-value pairs
var keyValuePairs = mailChimpFields.map(function (field, index) {
var profileValue = mailChimpProfile[index]
var keyValuePair = [field, profileValue]
return keyValuePair
})
var profile = keyValuePairs.reduce(function(prev, pair) {
var key = pair[0]
var value = pair[1]
prev[key] = value
return prev
}, {})
return profile
}
你太棒了!我在文档中读到了这一点。谢谢,诺亚,没问题。将mailchimp数据转换为概要文件对象的代码可能应该在某个时候包装成一个模块,我认为最好在客户端完成,作为滚动加载函数的一部分。我想如果我试图操纵服务器上的每个订阅者,那会影响性能。有什么想法吗?我想服务器端的速度应该足够快了。对it客户端与服务器端进行基准测试,并查看。不知道很难判断。唯一确定的方法是两种都尝试