GithubHelp home page GithubHelp logo

wuyafeijs / reader Goto Github PK

View Code? Open in Web Editor NEW
25.0 3.0 8.0 308 KB

小说阅读器(RN+dva+koa2)全栈实现

License: MIT License

JavaScript 93.64% Python 1.26% Java 1.07% Objective-C 3.20% Shell 0.52% Dockerfile 0.31%

reader's Introduction

RN+dva+node+mongo+nginx+docker 从开发到部署,全栈入坑指引!

前言

作为一个优秀前端er,除了要精通前端基础外,其他的如后台,运维,linux等都要有所了解。这样你才能对自己所负责的项目有一个整体的把握,不同端开发思维的碰撞,有助于你形成良好的代码习惯,写出高效优质的代码。话不多说,我们开始吧!

背景

这是个学习型的项目,还有些需要优化的地方,项目是参考 https://github.com/dlyt/YCool ,利用dva代替redux(个人认为dva比redux好学啊有木有,觉得redux概念不好理解的完全可以从dva入手啊,学完dva,redux秒懂), 然后新增了一些功能。利用工作之余的时间写出来,希望能帮助到大家~

目录结构

.
├── wu-server                // 后台服务
│   ├── Dockerfile           // dockfile
│   ├── README.md
│   ├── bin                  // 入口文件
│   │   └── server.js
│   ├── config               // 配置目录
│   │   ├── env
│   │   ├── index.js
│   │   └── passport.js      // 登录认证服务
│   ├── index.js
│   ├── nginx.conf           // nginx 配置
│   ├── package-lock.json
│   ├── package.json
│   ├── release.sh           // 一键部署shell脚本
│   └── src
│       ├── middleware       // 中间件
│       ├── models           // mongo model
│       ├── modules          // 接口目录
│       └── utils            // 公用工具
└── wyfReader                // app端    
    ├── App.js
    ├── __tests__
    │   └── App.js
    ├── app
    │   ├── containers       // UI组件
    │   ├── images
    │   ├── index.js
    │   ├── libs             // 公用库
    │   ├── models           // dva models
    │   ├── router.js        // 路由
    │   ├── services         // 接口服务
    │   └── utils
    ├── app.json
    ├── index.js
    ├── jsconfig.json
    ├── package-lock.json
    ├── package.json
    └── yarn.lock

前端

即RN项目,仅做了ios端的兼容(偷个懒^-^)。完全版的dva包含了react-router,我们这边不需要,所以只用了dva-core

基本功能:

  • 小说搜索,动态结果列表显示,支持模糊搜索。
  • 加入书架,阅读,小说删除功能
  • 登录注册功能,node实现验证码

效果图

后端

框架采用的koa2,passport作为登录认证,cheerio实现爬虫。

基本功能:

  • 提供小说操作相关的所有api
  • 提供登录注册相关api
  • node实现svg验证码
  • 定期自动更新小说爬虫

部署

运行sh release.sh即可实现一键部署。

流行的有两种方案:pm2和docker,现在docker这么流行,咱果断选择它,写了一个自动构建脚本:release.sh

大概流程就是: 把代码上传到自己主机上面 > 构建镜像 > 然后以守护进程方式运行。

如果还想更近一步的实现自动部署的话,可以试试travis CI 开源免费。它可以通过git的钩子,直接在项目提交到git的时候自动运行构建脚本

nginx 了解一下

它是一个高性能的HTTP和反向代理服务区。学习成本很低,这里咱只是简单的用nginx做了一下�代理。

server {
  listen 80;
  location / {
    root /opt/html;
    index index.html index.html;
  }
  location /server/ {
    expires -1;
    add_header Cache-Control no-cache,no-store;
    proxy_pass http://120.79.161.255:8080/;
  }
}

就是原先咱需写端口访问如: http://120.79.161.255:8080/ 现在直接访问http://120.79.161.255/server/ 即可,是不是变漂亮了很多?

当然nginx远不止这点功能,比如你可以用它做负载均衡、解决跨域问题、处理缓存 防盗链等HTTP相关问题,处理起来也很容易,只需在配置文件加上相关配置即可,有兴趣朋友可以深入一下。不过话说现在service mesh好像比较流行,Envoy好像想取代它的样子~~哈哈,扯远了~

总结

总的来说这个项目算是一个全栈练手项目,也没有花多长时间。有些地方还是有点粗糙的, 但是不妨碍大家学习。还有些概念和工具只是大概提了一下,目的是给初学的朋友留下一个印象(万一今后有用到呢~)。感兴趣的朋友可以基于这个多多优化,加上自己idea。最后,欢迎star & fork!!!

reader's People

Contributors

wuyafeijs avatar

Stargazers

Tenvi avatar  avatar Xiqin avatar  avatar Charlie avatar 李学武 avatar  avatar aboutboy avatar 陌竹 avatar Aklis avatar 陈宇 avatar plh avatar 书越 avatar xiequn avatar 耳东马乔 avatar  avatar  avatar bugfucker avatar little ze avatar  avatar  avatar  avatar Alan J avatar Bruce Yao avatar  avatar

Watchers

James Cloos avatar  HouJie avatar  avatar

reader's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.