PHP和MVC
(1)作用
MVC,在我印象中最典型的、自己用的多的当属THinkPHP。
MVC包括控制器(Controller),模型(Model),视图(View)。
控制器的作用是调用模型和 视图,将模型产生的数据传递给视图,并让视图去显示
模型的作用是获取数据并处理返回数据
视图的作用是将取得的数据进行美化,并向用户终端输出
(2)执行过程
1. 浏览者 -> 调用控制器,发出指令
2. 控制器 -> 按指令选择合适的模型
3. 模型 -> 按指令取数据
4. 控制器 -> 按指令选视图
(以上包括控制器的业务逻辑:如何选取模型、数据的二次处理,逻辑判断等待)
5. 视图 -> 把取到的数据展示出来
代码语言:javascript复制<?php
class Controller{
/*控制器的处理方法*/
function show(){
$testModel = new Model();/*按指令选择一个数据模型*/
$data = $Model -> get();/*模型按照指令取数据*/
/*按指令选择视图 实例化一个view的对象*/
$View = new View();
/*把取到的数据通过视图按用户的样子显示出来*/
$View -> display($data);
}
}
?>
npm命令详解
官方说明:https://docs.npmjs.com/cli/v8/commands/npm-init/
# 创建一个package.json文件
代码语言:javascript复制npm init(别名 npm create)
# 查看当前包的安装路径
代码语言:javascript复制npm root
# 安装包
代码语言:javascript复制npm install ModuleName / npm i
# 安装指定版本
代码语言:javascript复制npm install 包名@版本号
-f 或 --force:将强制 npm 获取远程资源,即使磁盘上存在本地副本也是如此。
–legacy-peer-deps:在安装时忽略所有 peerDependencies,采用 npm 版本 4 到版本 6 的样式。
# 全局安装
代码语言:javascript复制npm install ModuleName -g
# 安装包的同时,将信息写入到package.json中的 dependencies 配置中
代码语言:javascript复制npm install ModuleName --save
版本号
^: b允许在不修改 [major, minor, patch] 中最左非零数字的更改(匹配大于 X、Y、Z 的更新 Y、Z 的版本号)
~: 匹配大于 X.Y.Z 的更新 Z 的版本号
# 安装包的同时,将信息写入到package.json中的 devDependencies 配置中
代码语言:javascript复制npm install ModuleName --save-dev
# 配置安装模式
代码语言:javascript复制npm set global=true # 全局模式
npm set global=false # 本地模式
# 查看当前安装模式,将会得到一个布尔值
代码语言:javascript复制npm get global
# 查看npm的版本
代码语言:javascript复制npm -v
# 查看所有全局安装的包
代码语言:javascript复制npm ls -g
# 查看本地项目中安装的包
代码语言:javascript复制npm ls
# 查看包的 package.json文件
代码语言:javascript复制npm view ModuleName
# 查看包的依赖关系
代码语言:javascript复制npm view ModuleName dependencies
# 查看包的源文件地址
代码语言:javascript复制npm view ModuleName repository.url
# 查看包所依赖的node版本
代码语言:javascript复制npm view ModuleName engines
# 查看npm所使用的文件夹
代码语言:javascript复制npm help folders
# 更改包内容后进行重建
代码语言:javascript复制npm rebuild ModuleName
# 检查包是否已经过时,此命令会列出所有已经过时的包,可以及时进行包的更新
代码语言:javascript复制npm outdated
# 更新当前目录下node_modules子目录里的包
代码语言:javascript复制npm update ModuleName
# 全局更新
代码语言:javascript复制npm update ModuleName
# 卸载包
代码语言:javascript复制npm uninstall ModuleName
# 访问npm的json文件,此命令将会打开一个网页
代码语言:javascript复制npm help json
# 发布一个包的时候,需要检验某个包名是否存在
代码语言:javascript复制npm search ModuleName
# 清空npm缓存
代码语言:javascript复制npm cache clear
# 撤销自己发布过的某个版本代码
代码语言:javascript复制npm unpublish
# 使用淘宝镜像
代码语言:javascript复制npm install -g cnpm --registry=https://registry.npm.taobao.org
记录一次npm报错
代码语言:javascript复制Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
在新版本的npm中,默认情况下,npm install遇到冲突的peerDependencies时将失败。
使用--force或--legacy-peer-deps可解决这种情况。
- --force 会无视冲突,并强制获取远端npm库资源,当有资源冲突时覆盖掉原先的版本。
- --legacy-peer-deps:安装时忽略所有peerDependencies,忽视依赖冲突,采用npm版本4到版本6的样式去安装依赖,已有的依赖不会覆盖。
提示
同一个项目中的不同的开发人员可同时使用NPM和YARN
Yarn
相关文档:https://yarn.bootcss.com/docs
# 查看Yarn版本
代码语言:javascript复制yarn --version | -v
# 初始化包
代码语言:javascript复制yarn init #创建package.json
# 配置淘宝镜像
代码语言:javascript复制yarn config set registry https://registry.npm.taobao.org
# 安装依赖
代码语言:javascript复制yarn install #默认安装到./node_modules
yarn install --audit #安装时自动检测
arn install --vernbor #显示完整安装日志
# 添加依赖
代码语言:javascript复制yarn add package-name #安装包的“最新”版本。
yarn add package-name@1.2.3 #从注册表安装特定版本的包,使用--exact或-E安装软件包作为精确版本。
yarn add package-name@tag #安装特定的 “标签”(例如beta、next或latest)。
yarn -D | yarn global package #项目|全局
# 移除依赖
代码语言:javascript复制yarn remove <package...>
# 依赖更新
代码语言:javascript复制yarn upgrade
yarn upgrade left-pad
yarn upgrade left-pad@^1.0.0
yarn upgrade left-pad grunt
yarn upgrade @angular
# 检查软件包的安全问题
代码语言:javascript复制yarn audit
# 缓存清理
代码语言:javascript复制yarn cache clear
# 全局操作
代码语言:javascript复制yarn global add/list/upgrade...
# 列出已安装的软件包
代码语言:javascript复制yarn list
# 运行脚本
代码语言:javascript复制yum run script
# 老旧版本检查
代码语言:javascript复制yarn oudated