前后端分离和不分离的区别是什么
区别:前后端不分离中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,即后端需要控制前端的展示,前端与后端的耦合度很高。前后端分离中,后端仅返回前端所需的数据,不再渲染 HTML 页面,不再控制前端的效果,前端与后端的耦合度相对较低。
一、前后端分离的概念1、前后端分离
前后端分离是一种架构模式,说通俗点就是后端项目里面看不到页面(JSP | HTML),后端给前端提供接口,前端调用后端提供的 REST 风格接口就行,前端专注写页面(html|jsp)和渲染(JS|CSS|各种前端框架);后端专注写代码就行。
前后端分离的核心:后台提供数据,前端负责显示
1、软件架构模式最熟悉MVC设计模式,Model—View-Controller 模型-视图-控制器
它是怎么工作的?通俗来说:你在页面输入一个网址(请求-Request),这个网址跑到哪里去了呢?就去调用接口(REST 风格),这个接口其实就是访问后端的一段代码(方法),后端有很多方法。
如何确定访问的是哪个方法?就是接口定义好的,比如:177.25.26.7/idp/user/lo ...
webman使用Nginx代理
当 webman 需要直接提供外网访问时,建议在 webman 前增加一个 nginx 代理,这样有以下好处。
静态资源由 nginx 处理,让 webman 专注业务逻辑处理
让多个 webman 共用 80、443 端口,通过域名区分不同站点,实现单台服务器部署多个站点
能够实现 php-fpm 与 webman 架构共存
nginx 代理 ssl 实现 https,更加简单高效
能够严格过滤外网一些不合法请求
Nginx 示例代码:
1234567891011121314151617upstream webman { server 127.0.0.1:8877;}server { server_name 站点域名; listen 80; root /your/webman/public; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; if (!-f $request_fil ...
webman使用笔记
安装 webman
初始备注:
不要使用 php8.0 及以上版本(除非不用 think-cache 缓存插件)think-cache 无法友好的支持 php8.0 及以上版本。
目前使用 php7.4
composer 安装1、创建项目
1composer create-project workerman/webman
2、运行
进入 webman 目录
debug 方式运行(用于开发调试)
1php start.php start
daemon 方式运行(用于正式环境)
1php start.php start -d
注意webman 从 1.2.3 版本开始专门为 windows 系统提供了启动脚本(需要为 php 配置好环境变量),windows 用户请双击 windows.bat 即可启动 webman,或者运行 php windows.php 启动 webman。
3、访问
浏览器访问 http://ip 地址:8787
基础功能需要安装的 composer 扩展(默认以熟悉的 tp 为主)安装 think-template1、composer 安装
1compose ...
10个提高开发效率的 VS Code 快捷键!
作者:Mariana Simon译者:前端小智来源:dev
下面列出了一些智米们都应该尽快学习的快捷键。我真希望一开始写代码就知道它们。它可以节省我们数小时的手动码字。
1. Ctrl + P:显示搜索栏以搜索文件(Mac: Cmd + P)
我们经常在多个文件进行切换,这个快捷键可以帮助我们快速找到我们想到的文件。
2. Ctrl + Shift + P:显示命令面板(Mac: Cmd + Shift + P)
这个快捷键显示可以在其中搜索操作的命令面板。
3. Crtl + B:切换侧栏(Mac: Cmd + B)
显示或隐藏侧栏。
4. Ctrl + Shift + E:移到资源管理器窗口(Mac: Cmd + Shift + E)
移动到资源管理器窗口,高亮显示我们文件所在的位置。
5. Ctrl + Shift + M:快速显示错误和警告(Mac: Cmd + Shift + M)
每个人都喜欢没有 but 的代码,这个快捷键可以帮助我们更好的查看错误原因。
6. Ctrl + Shift + L:多光标选择(Mac: Cmd + Shift + L)
添加其他光标 ...
一篇搞懂Git 和 SVN 的区别【原理篇】
前言Git 和 SVN 都是版本管理系统,但是他们命令区别后面会简单进行一个对比,我们先从原理的角度分析
4.git 和 svn 命令先来复习哈命令
作用
git
svn
版本库初始化
git init
svn create
clone
git clone
svn co(checkout)
add
git add (.除去.gitignore,*所有的文件)
svn add
commit
git commit
svn commit
pull
git pull
svn update
push
git push
-
查看工作状态
git status
svn status
创建分支
git branch <分支名>
svn cp <分支名>
删除分支
git branch -d <分支名>
svn rm <分支名>
分支合并
git merge <分支名>
svn merge <分支名>
工作区差异
git differ (-cached / head)
s ...
PHP Faker 教程
什么是 PHP FakerFaker 是一个生成假数据的 PHP 库,Faka 数据通常用于测试或用一些伪数据填充数据库,Faker 受到 Perl 的 Data :: Faker 和 Ruby 的 Faker 的极大启发。
说白了就是:
我们在创建完数据表格后往往需要做一些假数据,而 Faker 就是这样的工具。安装 Faker
安装 Faker在项目所在的文件夹中打开命令行输入以下命令:
1composer require fzaninotto/faker
运行以后会在 vendor 文件夹下生成:
实际使用在项目中的实际使用方法(以 Thinkphp 为例):
12345678910111213141516171819202122232425262728293031323334353637383940414243<?phpnamespace MyFaker;//use会调用类注册, 前提是你得先导入相应的类注册方法 (autoload.php)use Faker\Factory;class FakerData{ //使用faker生成假数据 p ...
宝塔使用webhook更新服务器代码
安装 git1yum install git
安装 webhook 插件添加 shell 脚本,如上图,点击添加,数据名称 和 执行脚本(此处执行脚本框中 直接输入 shell 脚本可能会被过滤,所以可以先随便添加点东西,然后再重新添加 shell 脚本),shell 脚本如下
123456789101112131415161718192021222324252627282930313233343536373839404142#!/bin/bashecho ""#输出当前时间date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"echo "Start"#判断宝塔WebHook参数是否存在if [ ! -n "$1" ]; then echo "param参数错误" echo "End" exitfi#git项目路径gitPath="/www/w ...
Git基础知识
什么是 Git从一般开发者的角度来看,Git 有以下功能:
从服务器上克隆数据库(包括代码和版本信息)到单机上。
在自己的机器上创建分支,修改代码。
在单机上自己创建的分支上提交代码。
在单机上合并分支。
新建一个分支,把服务器上最新版的代码 fetch 下来,然后跟自己的主分支合并。
生成补丁(patch),把补丁发送给主开发者。
看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
一般开发者之间解决冲突的方法,开发者之间可以使用 pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
从主开发者的角度(假设主开发者不用开发代码)看,Git 有以下功能:
查看邮件或者通过其它方式查看一般开发者的提交状态。
打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
向公共服务器提交结果,然后通知所有开发人员。
Git 初入如果是第一次使用 Git,你需要设置署名和邮箱: ...
使用nodejs 打包网址为exe端
安装1npm install nativefier -g
使用设置 npm 源为
1npm config set registry https://registry.npm.taobao.org/
在 nativefier 后加上需要转换的网站地址, 比如:
1nativefier "https://www.zhihu.com/"
第一次打包需要下载 Eletron 框架, 很慢, 要有耐心……
12nativefier --name "恒星C端" "https://www.toushivip.com/tshxs"nativefier --name "恒星C端" "C:\Users\Administrator\Desktop\icon.ico"
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 ...
mysql实现group by后取各分组的最新一条
两种实现方式先 order by 之后再分组:
SELECT _ FROM (SELECT _ from tb_dept ORDER BY id descLIMIT 10000) a GROUP BY parent_id;
不加LIMIT可能会无效,由于 mysql 的版本问题。但是总觉得这种写法不太正经,因为如果数据量大于 Limit 的值后,结果就不准确了。所以就有了第二种写法。
SELECT * FROM tb_dept td,(SELECT max(id) id FROM tb_dept GROUP BY parent_id) md where td.id = md.id;
开发过程中真实 sql 语句举例:
1select * from (select * from guangnian_distribution order by id desc LIMIT 10000) m group by m.guangnian_id,m.user_id order by id desc