构建node.js基础镜像
在本教程中,我将向您展示如何使用Node.js和Cosmic JS创建一个简单的博客。 这将是您创建过的最快,最轻量的博客。 让我们开始吧。
TL; DR
- 观看演示
- 在Cosmic JS上安装Simple Blog App
- 在GitHub上查看代码库
入门
确保在计算机上安装了Node.js和NPM,否则请访问Node.js网站以安装最新版本。
确保已全局安装Yarn :
npminstall yarn -g
首先,为我们的应用程序创建一个文件夹。 在您喜欢的终端中,运行以下命令:
mkdirsimple -blog
cd simple -blog
现在,我们添加一个package.json文件,以导入我们应用程序的所有依赖项:
vimpackage . json
将以下内容添加到我们的package.json文件中:
{"dependencies" : {
"cosmicjs" : "^2.39.0" ,
"express" : "^4.15.2" ,
"hogan-express" : "^0.5.2" ,
"nodemon" : "^1.11.0"
},
"scripts" : {
"start" : "node app.js" ,
"development" : "nodemon app.js"
}
}
这是一个漂亮应用程序的漂亮依赖列表。 因此,我们将安装的是:
- Cosmic JS节点模块,可从Cosmic JS Bucket中获取我们的内容。
- 为我们的Web应用程序框架表达
- Hogan提供我们的模板视图
- Nodemon开发
在生产和开发中启动我们的应用程序,我们的脚本是必需的。
运行以下命令以安装我们的依赖项:
yarn
建立我们的博客
接下来,让我们开始构建我们的博客页面。 创建一个名为app.js的文件:
vim app .js
并将以下内容添加到app.js:
const express = require ( 'express' )
const app = express()
const hogan = require ( 'hogan-express' )
const http_module = require ( 'http' )
const http = http_module.Server(app)
app.engine( 'html' , hogan)
app.set( 'port' , (process.env.PORT || 3000 ))
app.use( '/' , express.static(__dirname + '/public/' ))
const Cosmic = require ( 'cosmicjs' )
const helpers = require ( './helpers' )
const bucket_slug = process.env.COSMIC_BUCKET || 'simple-blog-website'
const read_key = process.env.COSMIC_READ_KEY
const partials = {
header : 'partials/header' ,
footer : 'partials/footer'
}
app.use( '/' , (req, res, next) => {
res.locals.year = new Date ().getFullYear()
next()
})
// Home
app.get( '/' , (req, res) => {
Cosmic.getObjects({ bucket : { slug : bucket_slug, read_key : read_key } }, (err, response) => {
const cosmic = response
if (cosmic.objects.type.posts) {
cosmic.objects.type.posts.forEach( post => {
const friendly_date = helpers.friendlyDate( new Date (post.created_at))
post.friendly_date = friendly_date.month + ' ' + friendly_date.date
})
} else {
cosmic.no_posts = true
}
res.locals.cosmic = cosmic
res.render( 'index.html' , { partials })
})
})
http.listen(app.get( 'port' ), () => {
console .info( '==>