理解PHP MVC,以及NPM、YARN命令的相关说明

PHP和MVC

(1)作用

MVC,在我印象中最典型的、自己用的多的当属THinkPHP。

MVC包括控制器(Controller),模型(Model),视图(View)。

控制器的作用是调用模型和 视图,将模型产生的数据传递给视图,并让视图去显示

模型的作用是获取数据并处理返回数据

视图的作用是将取得的数据进行美化,并向用户终端输出

(2)执行过程

1. 浏览者 -> 调用控制器,发出指令

2. 控制器 -> 按指令选择合适的模型

3. 模型 -> 按指令取数据

4. 控制器 -> 按指令选视图

(以上包括控制器的业务逻辑:如何选取模型、数据的二次处理,逻辑判断等待)

5. 视图 -> 把取到的数据展示出来

<?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文件

npm init(别名 npm create)

# 查看当前包的安装路径

npm root

# 安装包

npm install ModuleName / npm i

# 安装指定版本

npm install 包名@版本号

-f 或 --force:将强制 npm 获取远程资源,即使磁盘上存在本地副本也是如此。
–legacy-peer-deps:在安装时忽略所有 peerDependencies,采用 npm 版本 4 到版本 6 的样式。

# 全局安装

npm install ModuleName -g

# 安装包的同时,将信息写入到package.json中的 dependencies 配置中

npm install ModuleName --save
版本号
^: b允许在不修改 [major, minor, patch] 中最左非零数字的更改(匹配大于 X、Y、Z 的更新 Y、Z 的版本号)

~: 匹配大于 X.Y.Z 的更新 Z 的版本号

# 安装包的同时,将信息写入到package.json中的 devDependencies 配置中

npm install ModuleName --save-dev

# 配置安装模式

npm set global=true # 全局模式
npm set global=false # 本地模式

# 查看当前安装模式,将会得到一个布尔值

npm get global

# 查看npm的版本

npm -v

# 查看所有全局安装的包

npm ls -g

# 查看本地项目中安装的包

npm ls

# 查看包的 package.json文件

npm view ModuleName

# 查看包的依赖关系

npm view ModuleName dependencies

# 查看包的源文件地址

npm view ModuleName repository.url

# 查看包所依赖的node版本

npm view ModuleName engines

# 查看npm所使用的文件夹

npm help folders

# 更改包内容后进行重建

npm rebuild ModuleName

# 检查包是否已经过时,此命令会列出所有已经过时的包,可以及时进行包的更新

npm outdated

# 更新当前目录下node_modules子目录里的包

npm update ModuleName

# 全局更新

npm update ModuleName

# 卸载包

npm uninstall ModuleName

# 访问npm的json文件,此命令将会打开一个网页

npm help json

# 发布一个包的时候,需要检验某个包名是否存在

npm search ModuleName

# 清空npm缓存

npm cache clear

# 撤销自己发布过的某个版本代码

npm unpublish

# 使用淘宝镜像

npm install -g cnpm --registry=https://registry.npm.taobao.org

记录一次npm报错

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版本

yarn --version |  -v

# 初始化包

yarn init #创建package.json

# 配置淘宝镜像

yarn config set registry https://registry.npm.taobao.org

# 安装依赖

yarn install #默认安装到./node_modules
yarn install --audit  #安装时自动检测
arn install --vernbor #显示完整安装日志

# 添加依赖

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   #项目|全局

# 移除依赖

yarn remove <package...>

# 依赖更新

yarn upgrade
yarn upgrade left-pad
yarn upgrade left-pad@^1.0.0
yarn upgrade left-pad grunt
yarn upgrade @angular

# 检查软件包的安全问题

yarn audit 

# 缓存清理

yarn cache clean

# 全局操作

yarn global add/list/upgrade...

# 列出已安装的软件包

yarn list

# 运行脚本

yum run script

# 老旧版本检查

yarn oudated