技术栈 vue + vue-router + nodejs + koa2 + mongodb + nginx
整个系统需要环境 nginx(分发请求给nodejs,http2,ssl),nodejs(数据处理),mongodb(数据存储)
本项目仅供学习参考,请勿用于任何商业、非法用途。由此带来的法律责任,本人概不承担!
Cms默认只有 封面上传七牛cdn、静态资源生成、播放源url替换 三个插件采集插件请点击下面 ↓ 的链接,下载更多采集插件。或者自己开发采集插件开发插件,使用插件,下载插件 => 插件教程,插件开发,安装插件
要求:nodejs >=7.6 mongodb >=3.4
# 安装依赖
npm install
# 初始化数据(创建默认数据)
npm run build
# 全局安装 pm2 forever
npm install pm2 forever -g
# 主程序启动
pm2 start app.js -i max --name app
# 定时任务程序启动
forever start cron.js
server {
listen 80;
# http 强制跳转 https
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
# 这里因为nodejs只是开了http,所以nginx转发给nodejs的请求,nodejs自己也只能识别自己开启的http,而不是https
# 所以需要在header手动加入一个字段,告诉nodejs,当前的协议是http 或者 https
proxy_set_header X-Proxy-Protocol "https";
# 要代理的本地后台 代理给nodejs
proxy_pass http://127.0.0.1:9999;
}
# 监听 ssl 443 端口
listen 443 ssl http2;
# 这里填网站域名,开启域名验证,只允许域名访问
server_name xxx.com;
# 开启 ssl
# 指定 ssl 证书路径
ssl_certificate /etc/ssl/xxx.com_chain.crt;
# 指定私钥文件路径
ssl_certificate_key /etc/ssl/xxx.com_key.key;
}
管理系统地址 http://localhost:9999/manage/index.html用户名: root 密码: 123456
├─backup // 数据备份存储文件夹
│
├─build // 初始化数据库
│ │
│ └──initBase.js // 数据库初始化操作
│
├─static // 静态文件 -- 前后端页面
│
├─script // 脚本目录 -- 采集脚本
│
├─methods // 前后端逻辑处理的方法,遵循mvc模式
│ │
│ ├──manage // 后台管理系统目录 -- 方法
│ │
│ ├──public.js // 前端页面公共方法 -- 方法
│ │
│ └──web.js // 前端页面方法 -- 方法
│
├─router // 全局路由目录 -- 接口汇总
│ │
│ ├──manage // 后台管理系统目录 -- 路由
│ │
│ ├──manage.js // use管理系统目录 -- 路由
│ │
│ └──web.js // use前端展示路由 -- 路由
│
├─middleware // 中间件目录
│ │
│ ├─router.js // 用于验证各种路径
│ │
│ ├─service.js // 用于验证网站开启/关闭 (前台部分)
│ │
│ └─userIp.js // 用于处理用户ip (nginx代理或者nodejs ipv4)
│
├─utils // 工具方法,配置文件
│ │
│ ├─cookie // cookie <=> session 存储中间件 > 挂载到ctx.sessin1
│ │
│ ├─token // token <=> session 存储中间件 > 挂载到ctx.session2
│ │
│ ├─pipeline // mongodb管道查询模型
│ │
│ ├─authToken.js // 验证token是否有效
│ │
│ ├─baseConnect.js // mongodb连接文件
│ │
│ ├─config.js // 初始化数据库配置参数
│ │
│ └─tools.js // 工具函数
│
├─app.js // 项目主文件 (使用pm2守护)
│
├─cron.js // 定时任务文件 (单独使用forever守护)
package com.topway.cms; import android.os.Bundle; import android.text.TextUtils; import com.topway.FlutterNativePlugin; import com.topway.bean.MyEvent; import com.topway.utils.MyLog; import org.gre
1 概述 2 安装和使用 2.1 安装 2.2 使用 DartPad:快速体验Dart 2.3 基本语法 3 最佳实践 参考
typedef或函数类型别名有助于定义指向内存中可执行代码的指针。 简单地说, typedef可以用作引用函数的指针。 下面给出了在Dart程序中实现typedefs的步骤。 Step 1: Defining a typedef typedef可用于指定我们希望特定函数匹配的函数签名。 函数签名由函数的参数(包括其类型)定义。 返回类型不是函数签名的一部分。 其语法如下。 typedef func
异常(或异常事件)是在执行程序期间出现的问题。 发生异常时,程序的正常流程中断,程序/应用程序异常终止。 内置Dart_programming例外包括 - Sr.No 例外与描述 1 DeferredLoadException 延迟库无法加载时抛出。 2 FormatException 当字符串或某些其他数据不具有预期格式且无法解析或处理时抛出异常。 3 IntegerDivisionByZero
包是一种封装一组编程单元的机制。 应用程序有时可能需要集成某些第三方库或插件。 每种语言都有一种机制来管理外部软件包,如Maven或Gradle for Java,Nuget for .NET,npm for Node.js等.Dart的软件包管理器是pub 。 Pub有助于在存储库中安装包。 托管软件包的存储库可以在https://pub.dartlang.org/.找到https://pub.
Dart是一种optionally typed language 。 Dart中的集合默认是异构的。 换句话说,单个Dart集合可以托管各种类型的值。 但是,可以使Dart集合保持同质值。 泛型的概念可用于实现相同的目的。 泛型的使用强制限制集合可以包含的值的数据类型。 这种集合被称为类型安全集合。 类型安全是一种编程功能,可确保内存块只能包含特定数据类型的数据。 所有Dart集合都通过泛型支持类
与其他编程语言不同,Dart不支持数组。 Dart集合可用于复制数组结构等数据结构。 dart:核心库和其他类在Dart脚本中启用Collection支持。 Dart_programming收藏基本上可归类为 - Sr.No Dart_programming收集和描述 1 List List只是一组有序的对象。 dart:core库提供了List类,可以创建和操作列表。 Fixed Length