编程技术

将代码与奇思妙想融合
web技术

React国际化实践指南

示例项目是由vite创建的react + ts模板 输入以下命令后输入项目名->React->Typescript即可创建 npm create vite@latest 安装所需工具包 npm i i18next react-i18next --save src目录下新建locales目录 新建语言文件,目录结构如下 src ├── locales | ├── en-US │ └── resources.json | └── zh-CN └── resources.json zh-CN/translation.json { "title": "标题", "common": { "confirm": "确认", "cancel": "
8 min read
web技术

javascript中的深拷贝与浅拷贝

js有五种基本数据类型,string,number,boolean,null,undefind。这五种类型的赋值,就是值传递。特殊类型对象的赋值是将对象地址的引用赋值。这时候修改对象中的属性或者值,会导致所有引用这个对象的值改变。如果想要真的复制一个新的对象,而不是复制对象的引用,就要用到对象的深拷贝。 当一个变量存放基本数据类型时与复杂的数据类型时分别存在以下的特点: * 基本数据类型的特点:变量直接将基本数据类型的值存储在栈(stack)内存中 * 引用数据类型的特点:变量将引用数据类型的引用(可以看作是地址)存储在栈(stack)内存,而对象本身存放在堆内存里,在栈中引用指向堆中的对象。 其实当解释器寻找引用值时,会首先检索其在栈中的地址引用,取得地址后从堆中获得对象。 首先我们来看一个例子: var num = 666; var numCopy = num; var obj = {name:"张三"}; var objCopy = obj; 对于以上的代码,变量的内存分配是在栈中,所以变量不可以存放堆中的对象,所以赋值就会出现两种情况
4 min read
NodeJS

用Puppeteer做一个简单的数据爬虫

用Puppeteer做一个简单的数据爬虫 本项目仅做参考,提供给新手的一个入门示例。此项目是利用puppeteer来爬取本人一个博客系统的数据 * 先看演示 因为禁用了headless,所以会弹出浏览器窗口,也是为了容易调试看效果 注意:因为是我自己的个人博客,服务器又是在国外,在国内访问较慢。如运行本demo出现超时,属于正常现象,这种情况下建议开启科学上网(搞技术的这就不多说了吧),开启全局代理试下 目录结构 * /data: 抓取数据存储位置(有条件的可以直接存在数据库中) * /utils: 工具类 * index.js: 入口文件(核心代码) * config.js: 配置文件(抓取地址与抓取页面数配置) 项目启动 * 安装依赖(进入项目目录) npm install * 普通启动 npm start * 调试启动 npm run dev 核心代码
5 min read
编程技术

Linux Crontab 定时任务

cron介绍 我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。 * /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名 * /etc/crontab 这个文件负责调度各种管理和维护任务。 * /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。 crontab 使用命令如下 crontab [-u username]    //省略用户表表示操作当前用户的crontab -e (编辑工作表) -l (列出工作表里的命令) -r (删除工作作) 我们用crontab -e进入当前用户的工作表编辑,是常见
2 min read