0%

获取URL的参数

1
2
3
4
5
6
7
8
9
10
11

function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}

示例

http://127.0.0.1/a.html?id=1&name=a

getQueryVariable(“id”) 返回1

getQueryVariable(“name”) 返回a

getQueryVariable(“age”) 返回false

出现这个提示之后

1
2
3
4
5
RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for an example.

需要执行这个命令

1
2
3

$ cp ~/.profile ~/.bash_login

配置改成如下即可

1
2
3
4
5
6
7
8
9

location / {
root /usr/share/nginx/html/cnode;
index index.html;
try_files $uri $uri/ @router;
}
location @router {
rewrite ^.*$ /index.html last;
}

指定时间内修改的文件

在十分钟内修改的

搜索当前目录中 10 分钟内修改的所有文件

1
$ find . -type f -mmin -10 

一天之内修改的文件

搜索当前目录中一天内修改的所有文件

1
$ find . -type f -mtime -1 

指定时间之前修改的文件

十分钟之前修改的文件

1
$ find . -type f -mmin +10 

1天之前修改的文件

1
$ find . -type f -mtime +1 

删除超过30天的文件

可以使用find命令搜索修改时间早于30天的文件

1
$ find /tmp -type  f -mtime +30

验证一下搜索结果是否正确,避免误删文件。确认无误后,执行以下命令删除

1
$ find /tmp -type f -mtime +30 -delete 

删除指定类型文件

除了删除所有文件之外,还可以添加更多筛选器来查找命令。例如,只需要删除扩展名为“.log”并在30天之前修改的文件。

为了安全起见,首先进行试运行并列出符合条件的文件。

1
$ find /var/log -name "*.log" -type f -mtime +30 

验证数据无误后,执行以下命令删除

1
$ find /var/log -name "*.log" -type f -mtime +30 -delete 

删除目录

以下命令将搜索 /var/log 目录下 90 天之前修改过的所有目录。

1
$ find /var/log -type d -mtime +90 

我们可以使用命令行选项执行 rm 命令。查找命令输出将作为输入发送到 rm 命令。-exec

1
$ find /var/log -type d -mtime +30 -exec rm -rf {} \; 

在删除目录之前,请确保没有删除任何有用的目录。有时,父目录修改日期可能早于子目录。在这种情况下,递归删除也可以删除子目录。

Vite是什么

  • Vite是一个开发服务器,它基于原生ES模块提供了丰富的内建功能,比如惊人的模块热更新

  • 一套构建指令,它使用Rollup打包代码,并且是与配置的,可输出用于生产环境的高度优化过的静态资源

为什么使用Vite

存在的问题

在浏览器支持ES模块之前,Javascript并没有提供原生机制让开发者以模块化的方式进行开发。所以就出现了webpackParcel等打包工具,它们也极大的改善了前端开发者的开发体验。

但是随着项目越来越大,需要处理的代码也注解的增长。开发体验就不是那么友好了,通常需要几十秒甚至几分钟才可以启动开发服务器,即便使用热更新,也得等到几秒之后才能在页面显示出来,极大地影响开发者的心情和开发效率。

Vite的解决方案

当冷启动开发服务器时,基于打包器的方式启动必须优先抓取并构建你的整个应用,然后才能提供服务。

Vite通过一开始讲应用中的模块区分为依赖源码两类,改进了开发服务器启动时间。

依赖

依赖大多为在开发时不会发生变动的纯Javascript。比如axios,一些较大的依赖处理起来也很高。

Vite会使用esbuild预构建依赖,这么做的目的有两个

CommonJSUMD 兼容性

开发阶段中,Vite的开发服务器将所有代码视为原生ES模块。因此,Vite必须先将作为CommonJSUMD 发布的依赖项转换为 ESM

性能

Vite将有许多内部模块的ESM依赖关系转换为单个模块,以便后续页面加载性能,

一些包将他们的ES模块构建作为许多单独的文件相互导入。当执行import时,浏览器会同时发出多个HTTP请求。尽管服务器在处理这些请求时没有问题,但大量的请求会在浏览器端造成网络阻塞,导致页面的加载速度过慢。 通过预购建lodash-es成为一个模块,我们就只需要发出一个HTTP请求了。

缓存

  • 文件系统缓存

Vite会将预购建的依赖缓存到node_modules/.vite, 它根据几个来源决定是否要重新运行与构建步骤

  1. package.json中的dependencies 列表

  2. 包管理器的lockfile,例如package-lock.json,yarn.lock,pnpm-lock.yaml

  3. 可能在vite.config.js相关字段中配置过的。

只有在上述其中一项发生更改时,才需要重新允许预购建。

如果出于某些原因,需要强制`vite`重新构建依赖,可以使用`--force`命令行选项启动开发服务器,或者手动删除缓存目录 `node_modules/.vite`
  • 浏览器缓存

解析后的依赖请求会以HTTPmax-age=31536000,immutable缓存。一旦被缓存,这些请求将永远不会在请求开发服务器。如果安装了不同版本,在附加不同的query使他们自动失效。

安装

下载Windows安装包,安装成功。

打开终端输入

1
2
ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]

创建应用

1
$  rails new blog

创建之后进入目录安装依赖

1
2
3
  
$ cd blog
$ bundle install

会出现ssl证书问题。

在终端中输入

需要科学上网

1
$ gem update --system

完成之后重新安装依赖即可

启动

1
$ ruby bin/rails server

创建controller

1
$  ruby bin/rails generate controller Welcome index

添加路由

config/routes.rb

1
resources :article

查看所有路由

1
$  ruby bin/rails routes

创建模型

1
2
3
$ ruby bin/rails generate model Article title:string text:text

$ ruby bin/rails db:migrate # 同步模型

接收参数

1
@article = Article.new(params.require(:article).permit(:title, :text))

字段验证

1
2
3
4
class Article < ApplicationRecord
validates :title, presence: true,
length: { minimum: 5 }
end

controller 增加前缀

1
rails g controller 'api/v1/users'