热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用node+backbone搭建个人博客系统

myblog博客站点地址:http:www.snayan.com。项目地址:https:github.comsnayanmyblog本项目用到的主要技术
myblog

博客站点地址:http://www.snayan.com。项目地址:https://github.com/snayan/myblog

本项目用到的主要技术栈:backbone+sass+node+mocha+chai+grunt。

coding

  • backbone

系统前端交互逻辑与视图渲染,运用collection,model,view,router,等backbone的特性,快速开发SPA应用。视图主要是用ejs模版引擎加上json数据进行渲染。js文件加载采用AMD模式异步加载,包依赖管理使用bower工具。

backbone.png

  • sass

系统样式渲染用sass编写scss,之后用grunt构件工具将scss编译成css文件

sass.png

  • node

系统运用RESTFUL API架构风格。服务端用express框架提供数据接口,配合backbone中model和collection的交互操作,主要是获取,更新,保存,删除等。抛开了mogodb存储,结合node的file模块使用文本文件存储,自己需要实现与backbone对应的一些model,例如,blog对象,以及blogSchema对象等,blogSchema是操作blog的封装对象,主要封装了CURD操作,每一类操作都有对应的asynchronous和synchronous函数。本来是刚开始都用monogodb和mongoose做好了,后来想着自己试着实现一个ORM对象,可以多学习一点,多折腾一点。

blog.png

文章发表是我只需要写markdown文件,上传即可。采用github上的marked将markdown文件转成html,用hignlight.js着色。

markdown.png

管理员认证过程没有使用现有的passport模块,而是自己用node的crypto模块,用aes-128-cbc进行加密和解密。将用户名和密码以及有效时间用空格加在一起加密,设置到COOKIE中。后续需要认证的操作都在router中加上认证校验即可。

auth.png

由于管理员认证是通过COOKIE和crypto实现的,那么就很容易被CRSF攻击。这方面,在管理员页面中动态生成一个token,传递到前端,后续前端的每次有权限校验的操作都需要把这个token放在header中传递,服务端获取这个token,加以验证。

crsf.png

  • mocha+chai

测试框架使用mocha,断言库使用chai。

test.png

  • grunt

最后就是项目构建工具了。grunt构建工具负责项目的ejs预编译,sass的编译,静态资源的concat,min,uglify,copy,rev等,以及express的启动和热加载,以及项目的打包和发布。grunt官网中都提供了非常丰富的插件,以及详细介绍说明,详见官网查看吧。本次项目用的grunt文件,略图如下,

grunt.png

publish

好了,通过前面的编码,系统已经初步完成了。现在需要部署发布到线上了。本来很少的工资,害的忍心到阿里云购买了最低配置的服务器,1G单核的,宽带1mbps,也不需要什么多核去做负载均衡了,也没有买CDN加速缓存了。自己的站点,自己都很少去逛,估计别人也不会逗留多长时间?。听说,现在的对码农的要求都是熟悉Linux环境,由于以前是做.net的,玩的都是window系统,所以,这次,买的服务器是centos最新版的7.2 64位。首先安装了nginx,用作反向代理,配置如下图,接着安装了node,又安装了pm2,又安装了unzip。最后终于搞完了。什么都自己动手做一下,收获还是很多的。

nginx.png



推荐阅读
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
  • 解决针织难题:R语言编程技巧与常见错误分析 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 在尝试对从复杂 XSD 生成的类进行序列化时,遇到了 `NullReferenceException` 错误。尽管已经花费了数小时进行调试和搜索相关资料,但仍然无法找到问题的根源。希望社区能够提供一些指导和建议,帮助解决这一难题。 ... [详细]
  • 利用 Python 中的 Altair 库实现数据抖动的水平剥离分析 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 为了优化直播应用底部聊天框的弹出机制,确保在不同设备上的布局稳定性和兼容性,特别是在配备虚拟按键的设备上,我们对用户交互流程进行了调整。首次打开应用时,需先点击首个输入框以准确获取键盘高度,避免直接点击第二个输入框导致的整体布局挤压问题。此优化通过调整 `activity_main.xml` 布局文件实现,确保了更好的用户体验和界面适配。 ... [详细]
  • 在 .NET Core MVC 应用中,某页面在使用 IIS Express 和 IIS 进行调试时均能正常运行,但在发布后出现了 500 内部服务器错误。尽管在代码中添加了异常处理逻辑,但在 `return View(department)` 时并未捕获到任何异常,仅显示 500 错误,且没有任何其他详细的错误信息。这可能与发布环境的配置或依赖项有关,建议检查日志文件和配置设置以进一步诊断问题。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 深入解析 Android 选择器与形状绘制技术
    本文深入探讨了 Android 中选择器(Selector)与形状绘制(Shape Drawing)技术的应用与实现。重点分析了 `Selector` 的 `item` 元素,其中包括 `android:drawable` 属性的使用方法及其在不同状态下的表现。此外,还详细介绍了如何通过 XML 定义复杂的形状和渐变效果,以提升 UI 设计的灵活性和美观性。 ... [详细]
author-avatar
手机用户2502911563
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有