手把手教你搭建Hexo博客
搭建Hexo博客的步骤详述
Hexo是一个基于Node.js的全静态博客系统,无需数据库支持,个人且对服务器资源消耗极低。博客博客本文将指导开发者快速搭建Hexo博客,源码芋道源码 打包包括准备工具、个人环境设置、博客博客部署过程等。源码
首先,个人准备一台安装了Node.js和Git的博客博客电脑,操作系统不限。源码其次,个人选择一台Linux系统如Debian、博客博客CentOS作为服务器。源码确保安装好Git、Nginx和NVM(多版本Node.js管理器),终极主升源码并安装Lighthouse服务器。
在服务器端,安装宝塔镜像,设置端口,使用Git和Nginx完成网站创建。宝塔环境中,创建blog和imageHost两个网站文件夹,用于存放Hexo打包的苏州商城网站源码public文件和文件夹。配置Nginx创建Nginx配置文件,设置文件夹权限。
在Git操作上,创建Git用户、仓库并指向工作空间到blog和imageHost文件夹。通过vim编辑post-receive文件,添加接收钩子,确保Git工作正常。智能粮库系统源码
本地部署Hexo,安装Node.js、全局安装Hexo、初始化Hexo、运行Hexo以及打包推送到服务器。使用hexo init创建文件夹并初始化Hexo,运行hexo s部署到服务器。
打包推送到服务器时,unity 粘液人源码安装推送插件,修改_config.yml文件以Git方式部署,生成public文件夹并推送。查看文件夹内容,使用浏览器访问Hexo博客。
部署图床同样简单,创建本地仓库、添加并推送到服务器。在服务器上使用git操作完成上传。
通过Nginx反代将两个文件夹融合,使用域名解析或Nginx反向代理实现图床文件夹为博客文件夹的子文件夹。
最终效果为,通过添加美化和文章输出,部署到Lighthouse服务器的Hexo博客成功搭建完成。备份网站和Lighthouse对Hexo的兼容性也已详细解答。
JS组合JSFANS聚集处
想要深入了解和参与JavaScript(JS)的全球社区?这里有几个推荐的地方,让你和其他JS爱好者一起交流、学习和分享。 首先,你可以访问百度JS吧:t']}次阅读">{ $blog['readcnt']}</span><span class="s-page-info info-comment" title="{ $blog['commentcnt']}条评论">{ $blog['commentcnt']}</span>
<span class="s-page-info info-date">{ $blog['date']}</span>
</p>
</div>
{ /foreach}
</div>
<div id="right_side">
this is side content
</div>
<div class="clear"></div>
</div>
<div id="footer">
<ul id="footer_nav">
<li><a href="">我的博客</a></li>
<li><a href="">站点地图</a></li>
<li><span>版权所有,保留一切权利</span></li>
<li><span>由Zend支持(c)-</span></li>
</ul>
</div>
</body>
</html>
nodejs个人博客数据分页开发教程
本文为大家分享了nodejs个人博客开发的数据分页,具体内容如下
控制器路由定义
首页路由:http://localhost:/
首页分页路由:http://localhost:/index/2
/
*** 首页控制器
*/
var router=express.Router();
/*每页条数*/
var pageSize=4;
/*首页*/
router.get('/',function(req,res,next){
var cid=0;
F.model("article").assignIndexData(cid,1,pageSize,res);
});
/*首页分页*/
router.get('/index/:page',function(req,res,next){
var currentPage=parseInt(req.params.page);
var cid=0;
F.model("article").assignIndexData(cid,currentPage,pageSize,res);
});
分类列表分页路由:http://localhost:/category/分类id/分页
/*分类页*/
router.get('/category/:cid/:page',function(req,res,next){
var cid=req.params.cid;
var currentPage=parseInt(req.params.page);
F.model("article").assignIndexData(cid,currentPage,pageSize,res);
});
模型数据部分
控制器调用article模型的assignIndexData()方法,参数:分类id,当前页,每页条数,响应对象
调用category模型的getAllList()方法得到分类list,参数:回调函数
调用article模型的getCount()方法得到总条数,参数:分类id,回调函数
调用article模型的getArticlePager()方法得到文章对象的数据list,参数:分类id,当前页,每页条数,回调函数
对上一页,下一页进行-1和+1,并进行判断,上一页应大于0,下一页应小于等于总页数(总条数/每页条数 向上取整)
把数据分配到模板上
/
*** 文章模型文件
*/
module.exports={
/*获取条数*/
getCount:function(categoryId,callback){
var condition="";
if(categoryId!=0){
condition="where category_id="+categoryId;
}
var sql="select count(*) num from article "+condition;
db.query(sql,callback);
},
/*获取分页数据*/
getArticlePager:function(categoryId,currentPage,pageSize,callback){
if(currentPage=0||!currentPage) currentPage=1;
var start=(currentPage-1)*pageSize;
var end=pageSize;
var condition="";
if(categoryId!=0){
condition="where category_id="+categoryId;
}
var sql="select * from article "+condition+" order by time desc limit "+start+","+end;
db.query(sql,callback);
},
/*归档*/
getArchives:function(callback){
db.query("select time from article order by time desc",callback);
},
/*分配首页数据*/
assignIndexData:function(cid,currentPage,pageSize,res){
var categoryModel=F.model("category");
var articleModel=this;
// 分类数据
categoryModel.getAllList(function(err,categoryList){
// 文章条数
articleModel.getCount(cid,function(err,nums){
// 文章分页
articleModel.getArticlePager(cid,currentPage,pageSize,function(err,articleList){
var nextPage=(currentPage+1)=Math.ceil(nums[0].num/pageSize) ? Math.ceil(nums[0].num/pageSize) : currentPage+1;
var prePage=(currentPage-1)=0 ? 1 : currentPage-1;
// 归档
articleModel.getArchives(function(err,allArticleTime){
var newArticleTime=[];
for(var i=0;i
newArticleTime.push(F.phpDate("y年m月",allArticleTime[i].time));
}
/*分配数据*/
var data={
categoryList:categoryList,
articleList:articleList,
cid:cid,
nextPage:nextPage==0 ? 1 : nextPage,
prePage:prePage,
allArticleTime:newArticleTime,
currentPage:currentPage
};
/*渲染模板*/
res.render("home/index",data);
});
});
});
});
}
};
模板部分
href="/category//index/" rel="external nofollow" 上一页
href="/category//index/" rel="external nofollow" 下一页
效果图:
2024-12-24 00:04
2024-12-23 23:23
2024-12-23 22:09
2024-12-23 22:09
2024-12-23 21:59