演示页面
此文为翻译+简单的介绍,不当之处敬请指出
hackathon是采用oauth认证的一个项目,目前支持大部分国外主流网站
Modern Theme
Flatly Bootstrap Theme
API Examples
注意:如果你是node或者express的初学者,建议先看看Node.js and Express 101;另外,这还有一个对于零基础初学者不错的教程: Getting Started With Node.js, Express, MongoDB.
最简单的办法就是从github上克隆下来啦
# Get the latest snapshotgit clone --depth=1 https://github.com/sahat/hackathon-starter.git myproject# Change directorycd myproject# Install NPM dependenciesnpm installnode app.js
注意:我墙裂(●˘◡˘●)推荐安上Nodemon。用上它,当你对代码有改动时,它会自动重启服务,很方便吧。安装之后,开启服务不要使用node app.js,要使用nodemon app.js。这家伙会自启服务器,这样你就不用因为小小的改动而手动重启服务器了,大大节省时间啊。这样子安装:
sudo npm install -g nodemon
为了能使用APIS或者OAuth认证方式,你需要准备以下东西:Client ID, Client Secret, API Key, or Username & Password。这些东西你需要找第三方去申请才能获得。
Hackathon Starter 2.0 :我已经把栗子中所有的这些弄好了,你嫌麻烦,就直接用我的吧。但是别忘了你发布自己的网站或者APP时,换上自己的许可证。
google申请办法
注意:当你打算开发正式的应用时,请申请新的应用,不要使用本地地址的应用
译者:我将专门开一篇介绍各大网站申请流程,暂时介绍谷歌
名称 | 描述 |
---|---|
config/passport.js | Passport本地和OAuth认证,一个登录认证中间件 |
controllers/api.js | /api的路由管理,包含所有的api栗子 |
controllers/contact.js | 控制连接表单 |
controllers/home.js | 控制首页 |
controllers/user.js | 用户账户管理 |
models/User.js | 基于Mongoose的用户数据库操作的模块 |
public/ | 一些静态文件(比如字体,图片,css,js) |
public/js/application.js | 指定客户端js依赖 |
public/js/main.js | 这里放置你的客户端代码 |
public/css/main.scss | 你的应用自写的样式 |
public/css/themes/default.scss | 用了bootstrap让它看起来更漂亮 |
views/account/ | 登录,密码重置和侧边栏的模板 |
views/api/ | Api栗子的模板 |
views/partials/flash.jade | 错误、提示和成功的提醒信息 |
views/partials/header.jade | 导航栏模板 |
views/partials/footer.jade | 页脚模板 |
views/layout.jade | 基础模板 |
views/home.jade | 主页模板 |
.travis.yml | Travis CI 积分 |
.env.example | 你申请的API Keys ,tokens, passwords和数据库链接 |
app.js | 主体文件 |
package.json | NPM 依赖 |
注意:你不一定非要按我这么做,我只是提供一个栗子,你觉得怎么方便就怎么来。
包名 | 描述 |
---|---|
async | 帮助你异步编程的模块 |
bcrypt-nodejs | 可以hash和盐化密码 |
bitgo | 比特币钱包Api |
cheerio | 使用jQuery语法的爬虫模块 |
clockwork | 定时SMS模块 |
connect-mongo | express链接mongodb |
dotenv | 从.env file.加载环境变量 |
express | 著名的nodejs网页框架 |
body-parser | express4的中间件 |
express-session | express4的中间件 |
morgan | express4的中间件 |
compression | express4的中间件 |
errorhandler | express4的中间件 |
serve-favicon | express4的中间件 |
express-flash | 给express提供flash信息支持 |
fbgraph | FB图形API |
github-api | githubAPI |
jade | express的模板引擎 |
lastfm | Last.fm API |
instagram-node | instagram API |
lob | lob API |
lusca | CSRF中间件 |
mongoose | MongoDB ODM |
node-foursquare | Foursquare API |
node-linkedin | LinkedIn API |
node-sass-middleware | sass 中间件 |
nodemailer | node发邮件组件 |
passport | 简单而优雅的登录认证 |
passport-facebook | 登录FB的插件 |
passport-github | 登录github的插件 |
passport-google-oauth | 登录google的插件 |
passport-twitter | 登录twitter的插件 |
passport-instagram | 登录instagram的插件 |
passport-local | 本地登录验证 |
passport-linkedin-oauth2 | 登录linkedin的插件 |
passport-oauth | 允许oauth登录验证 |
paypal-rest-sdk | PayPal API |
request | 简单的HTTP请求模块 |
stripe | Stripe API |
tumblr.js | Tumblr API |
twilio | Twilio API |
twit | Twitter API |
lodash | 一个便利的js库 |
validator | 在controllers/api.js做验证控制 |
mocha | 测试框架 |
chai | BDD/TDD |
supertest | HTTP |
yui | yahoo API |
当安装模块时,可以加上--save,这样子就会自动写入package.json了例如 npm install --save moment
当你有多个异步任务需要进行,可以采用 async.parallel()举个场景栗子,你可能需要在一个返回页面模板之前,生成的数据需要3个有相关性的操作,这个时候你就需要这个了
你需要添加一个隐藏的input元素在你的表单里input(type='hidden', name='_csrf', value=_csrf)可以参考pull request #40
注意: 现在可能的原因也有URL白名单了,换句话说,你可以指定一个特别的路由来通过CSRF验证
注意 2: 对于动态URL白名单,如果你的代码含有req.originalUrl你需要定期测试
这个普遍的错误信息来自于app.js中
mongoose.connection.on('error', function() { console.error('MongoDB Connection Error. Please make sure MongoDB is running.');});
在运行app.js之前,你的MongoDB服务必须启动可以在这里下载MongoDB,如果你是windows用户,那么移步这里.
小贴士:如果你总是需要连接互联网,你可以用 mLab 或者 Compose来代替本地安装数据库,这样你只需要在.env文件里更新数据库就行了。
可能你没有更改本地数据库链接。如果你在使用的是用本地链接,那么你只能在本地使用数据库;当你部署在Heroku,OpenShift或者其他的平台上时,你的数据库无法运行在localhost的链接下。