当前位置: 首页 > news >正文

node.js框架StrongLoop快速入门实战

目录

一、StrongLoop框架简介

二、安装StrongLoop框架

三、创建项目my-loopback-project

四、项目布局和结构

五、配置连接mysql数据库

六、实现自动生成api接口


一、StrongLoop框架简介

StrongLoop是一个强大的框架,它基于Node.js构建,几乎涵盖了移动开发所需的所有功能。这个框架由IBM的一个子公司开发和维护,它使用开源的LoopBack作为基础,这使得它非常灵活和可扩展。StrongLoop的好处在于它可以帮助我们快速地构建移动应用的后端服务。它提供了一整套解决方案,包括API的创建、数据模型管理、数据库连接等等。这意味着我们不需要从头开始编写这些功能,而是可以直接使用StrongLoop提供的现成工具来完成工作。此外,StrongLoop还支持多种数据库系统,如MySQL、MongoDB、PostgreSQL等,这让我们可以根据项目需求选择最适合的数据库来存储和管理数据。最重要的是,StrongLoop可以帮助我们轻松地构建RESTful API,这对于现代Web应用非常重要,因为它们通常需要与前端分离的后端API来支持多平台的应用开发。

StrongLoop框架的核心优势和功能可以总结为以下几点:

  1. 全栈开发能力
    • StrongLoop提供了从前端到后端的全套开发工具和服务,包括API创建、数据模型管理、数据库连接等。
    • 它通过提供全面的后端解决方案,大大减少了开发者需要编写的代码量,使得快速开发成为可能。
  2. 高度扩展性
    • 基于LoopBack.io构建,StrongLoop拥有良好的扩展性,允许开发者根据项目需求轻松添加功能模块。
    • 随着项目需求的增加,开发者可以通过添加功能模块来拓展框架的能力。
  3. 数据库支持
    • StrongLoop支持多种数据库系统,如MySQL、MongoDB、PostgreSQL等,满足不同开发场景的数据存储和处理需求。
    • 这种多数据库支持确保了开发者可以为不同的应用场景选择最合适的数据存储解决方案。
  4. 自动生成SDK
    • 根据后端模型,StrongLoop可以自动生成对应的前端SDK,极大地简化了前后端的协同工作。
    • 这一特性不仅提高了开发效率,还减少了前后端集成中可能出现的错误。
  5. DevOps工具集成
    • StrongLoop集成了调试、包管理、构建、部署、集群管理和日志记录等DevOps工具,帮助开发者在整个应用生命周期中进行有效管理和维护。
    • 这些工具的集成有助于确保项目的高效运行和稳定发布。
  6. 实时通信功能
    • 对于需要实时数据交互的应用,StrongLoop提供了实时通信的功能,大大提升了用户体验。
    • 实时通信功能对于构建动态和交云的现代应用尤为重要,比如即时消息通知、实时数据分析等场景。

二、安装StrongLoop框架

  • 需要安装完成node环境
  • 执行命令安装strongloop :npm install -g strongloop 或者 yarn global add strongloop 

三、创建项目my-loopback-project

创建项目my-loopback-project

具体命令如下

  1. slc loopback
  2. 填写应用名称
  3. 输入目录名称包含项目(这里可以回车跳过)
  4. 使用版本2.x,3.x,根据个人需求选择
  5. 创建什么种类的应用程序,根据个人需求选择
  6. cd 项目目录名称,如testApp
  7. npm install 
  8. node server/server.js  启动脚本

四、项目布局和结构

Standard project layout(标准的项目布局)

在 Loopback 根目录下有三个 子目录:

  • server - Node 应用脚本和配置文件
  • client - 客户端 JavaScript, HTML, 和 CSS 文件.
  • common - 文件共用客户端和服务器. 子目录 common/models 目录 包含所有模型JSON和JavaScript文件
  • definitions - API and product definition YAML files (IBM API Connect only).

目录结构

  1. |- node-modules/
  2. |- package.json
  3. |- README.md
  4. |- server/ 后台服务端目录
  5. | |- boot/ 初始化脚本路径, 里面的文件会按照字母顺序执行.
  6. | |- config.json 应用程序配置文件 | 可以通过 app.get('setting-name')获取
  7. | |- component-config.json [LoopBack组件]加载的配置
  8. | |- datasources.json 数据源配置 | 可以通过 app.datasources['datasource-name'] 获取
  9. | |- middleware.json 中间件定义文件
  10. | |- model-config.json Model 定义文件
  11. | |- server.js 核心启动文件
  12. |
  13. |- client/
  14. | |- README.md
  15. | |- other
  16. |
  17. |- common/ 共享文件夹
  18. | |- models/ 自定义模型文件夹 | myModel = app.models.myModelName
  19. | |- model-name.js 模型逻辑脚本
  20. | |- model-name.json 模型配置脚本 | 小写

五、配置连接mysql数据库

命令:npm install --save loopback-connector-mysql

生成datasources.json文件

修改文件内容,改成自己的配置

{"db": {"host": "localhost","port": 3306,"url": "mysql://root:haosql@localhost/xunshu","name": "db","connector": "mysql"}
}
这段 "url": "mysql://root:haosql@localhost/xunshu",

root为用户名

haosql为密码

xunshu为数据库名

六、实现自动生成api接口

命令:slc loopback:model创建一个数据模型。

我们以sys_user数据表为例子,这个表字段为id,username,password

在model-config.json配置模型数据库为db,这个db就是对应datasources.json文件的name,public为true开启rest访问,开启后访问http://localhost:3000/explorer这个地址,api会暴露出来。

  "sys_user": {"dataSource": "db","public": true}

然后再server/models下创建sys_user.js和sys_user.json文件

{"name": "sys_user","base": "PersistedModel","idInjection": true,"options": {"validateUpsert": true},"properties": {"id": {"type": "string"},"username": {"type": "string"},"password": {"type": "string"}},"validations": [],"relations": {},"acls": [],"methods": {}
}

这段name的sys_user为表名,properties为返回的id,username,password

'use strict';module.exports = function(SysUser) {// 定义一个方法来查询sys_user表的username字段和password字段SysUser.getUserInfo = function(userId, cb) {SysUser.findById(userId, function(err, instance) {if (err) return cb(err);cb(null, { id: instance.id, username: instance.username, password: instance.password });});};SysUser.remoteMethod('getUserInfo', {accepts: {arg: 'id', type: 'number', required: true},returns: {arg: 'userInfo', type: 'object', root: true},http: {path: '/:id/userinfo', verb: 'get'}});
};

这段代码就是创建一个sys_user的方法,自动生成一些api。

最后访问前需要关闭掉自带的权限验证

在server/boot/authentication.js关闭掉 server.enableAuth()

'use strict';module.exports = function enableAuthentication(server) {// enable authentication// server.enableAuth();};

最后就可以启动:http://localhost:3000/explorer

点击Try it out!可以看到查询成功,就说明配置没问题了。

七、学习网站和截图参考

学习网站:README - 《Loopback 中文文档》 - 书栈网 · BookStack

截图参考↓

目录结构

sys_user.js

sys_user.json

mysql数据表

model-config.json配置

authentication取消权限

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python编码系列—Python建造者模式:构建复杂对象的优雅之道
  • C++学习笔记(22)
  • llvm后端之函数栈帧
  • Mastering openFrameworks_第五章_使用视频
  • 健身管理|基于java的健身管理系统小程序(源码+数据库+文档)
  • 清理.svn文件夹执行命令bat
  • -isystem isystem 实验记录
  • 【数据结构与算法 | 灵神题单 | 前后指针(链表)篇】力扣19, 61,1721
  • 赛氪技术支持中医药知识大赛,亮相中国国际服务贸易交易会
  • 1997-2022年各省农用化肥折纯量数据(无缺失)
  • 【Kubernetes】常见面试题汇总(十五)
  • 数据库系统概论(3,4)
  • JDK8的一些主要的新特性
  • 计算机网络(第8版)第三章 数据链路层(3.4)
  • 【C++ Primer Plus习题】16.1
  • 【node学习】协程
  • 【面试系列】之二:关于js原型
  • angular2 简述
  • canvas 高仿 Apple Watch 表盘
  • Cookie 在前端中的实践
  • iOS编译提示和导航提示
  • Iterator 和 for...of 循环
  • Java多线程(4):使用线程池执行定时任务
  • jdbc就是这么简单
  • JS+CSS实现数字滚动
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • nginx 配置多 域名 + 多 https
  • Octave 入门
  • PHP变量
  • session共享问题解决方案
  • Vue2.0 实现互斥
  • vue-router的history模式发布配置
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 笨办法学C 练习34:动态数组
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 算法之不定期更新(一)(2018-04-12)
  • 我的业余项目总结
  • 延迟脚本的方式
  • 移动端 h5开发相关内容总结(三)
  • 移动端解决方案学习记录
  • 自制字幕遮挡器
  • Java性能优化之JVM GC(垃圾回收机制)
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ‌JavaScript 数据类型转换
  • #565. 查找之大编号
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (python)数据结构---字典
  • (TOJ2804)Even? Odd?
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (五)c52学习之旅-静态数码管