目录
一、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框架的核心优势和功能可以总结为以下几点:
- 全栈开发能力
- StrongLoop提供了从前端到后端的全套开发工具和服务,包括API创建、数据模型管理、数据库连接等。
- 它通过提供全面的后端解决方案,大大减少了开发者需要编写的代码量,使得快速开发成为可能。
- 高度扩展性
- 基于LoopBack.io构建,StrongLoop拥有良好的扩展性,允许开发者根据项目需求轻松添加功能模块。
- 随着项目需求的增加,开发者可以通过添加功能模块来拓展框架的能力。
- 数据库支持
- StrongLoop支持多种数据库系统,如MySQL、MongoDB、PostgreSQL等,满足不同开发场景的数据存储和处理需求。
- 这种多数据库支持确保了开发者可以为不同的应用场景选择最合适的数据存储解决方案。
- 自动生成SDK
- 根据后端模型,StrongLoop可以自动生成对应的前端SDK,极大地简化了前后端的协同工作。
- 这一特性不仅提高了开发效率,还减少了前后端集成中可能出现的错误。
- DevOps工具集成
- StrongLoop集成了调试、包管理、构建、部署、集群管理和日志记录等DevOps工具,帮助开发者在整个应用生命周期中进行有效管理和维护。
- 这些工具的集成有助于确保项目的高效运行和稳定发布。
- 实时通信功能
- 对于需要实时数据交互的应用,StrongLoop提供了实时通信的功能,大大提升了用户体验。
- 实时通信功能对于构建动态和交云的现代应用尤为重要,比如即时消息通知、实时数据分析等场景。
二、安装StrongLoop框架
- 需要安装完成node环境
- 执行命令安装strongloop :npm install -g strongloop 或者
yarn global add strongloop
三、创建项目my-loopback-project
创建项目my-loopback-project
具体命令如下
- slc loopback
- 填写应用名称
- 输入目录名称包含项目(这里可以回车跳过)
- 使用版本2.x,3.x,根据个人需求选择
- 创建什么种类的应用程序,根据个人需求选择
- cd 项目目录名称,如testApp
- npm install
- 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).
目录结构
|- node-modules/
|- package.json
|- README.md
|- server/ 后台服务端目录
| |- boot/ 初始化脚本路径, 里面的文件会按照字母顺序执行.
| |- config.json 应用程序配置文件 | 可以通过 app.get('setting-name')获取
| |- component-config.json [LoopBack组件]加载的配置
| |- datasources.json 数据源配置 | 可以通过 app.datasources['datasource-name'] 获取
| |- middleware.json 中间件定义文件
| |- model-config.json Model 定义文件
| |- server.js 核心启动文件
|
|- client/
| |- README.md
| |- other
|
|- common/ 共享文件夹
| |- models/ 自定义模型文件夹 | myModel = app.models.myModelName
| |- model-name.js 模型逻辑脚本
| |- 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取消权限