页面横向滚动
代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> * { padding: 0; margin: 0; ...
js面试题
有一个数组中存着RGB三种颜色的球,需要按RGB的顺序排序数组123456789101112131415161718192021222324252627282930313233343536373839404142434445 let RGBData = ['R', 'G', 'B', 'R', 'R', 'G', 'B', 'R', 'R', 'G', 'B', 'R'] function sortRGB(arr) { let i, j, len, rear, front = 0 rear = arr.length - 1 len= rear + 1 for (i = front, j = 0; j < len; ) { if (arr[i] == ...
DevOps总结
DevOps 是什么?DevOps来自Development和Operations的结合,突出重视软件开发人员和运维人员的沟通合作DevOps 是一种软件开发方法。它将持续开发、持续测试、持续集成、持续部署和持续监控贯穿于软件开发的整个生命周期。当前几乎所有的顶尖公司均采用了该方法,用以提高软件开发质量,并缩短软件开发生命周期。从而以达到每个公司对软件产品的期望,交付出客户最满意的产品。
DevOps流程计划(plan)、编码(code)、编译(build)、测试(test)、发布(release)、部署(deploy)、运营(operate)、监控(monitor)
DevOps工具链
PuppetPuppet 是使用最广泛的 DevOps 工具。允许快速、频繁地交付和发布技术更改。具有版本控制、自动测试和连续交付的功能。可以将整个基础架构作为代码进行管理,而无需扩大团队规模。特性
AnsibleAnsible 是领先的 DevOps 工具。Ansible 是一个开源 IT 引擎,可自动执行应用部署、云供应、内部服务编排和其他 IT 工具。DevOps 团队可以更轻松地扩展自 ...
electron窗口管理
窗口主窗口隐藏和恢复主窗口为什么需要 主窗口?一个应用存在着许多的窗口,需要一个窗口作为 __主窗口__,如果该窗口关闭,则意味着整个应用被关闭。
场景:在应用只有一个页面的时,用户点击关闭按钮,不想让整个应用关闭,而是隐藏;例如:其他的app,像微信,QQ等桌面端。
主进程代码示例,完整代码在本应用的app/browser-window/index.ts处
12345678910111213141516let mainWindowId: numberconst browserWindow = new BrowserWindow()// 记录下主窗口idif (!mainWindowId) { mainWindowId = browserWindow.id}browserWindow.on('close', event => { // 如果关闭的是主窗口,阻止 if (browserWindow.id === mainWindowId) { event.preventDefault() browse ...
electron应用
应用Dialog与文件选择显示系统对话框, 提供了消息提示、消息提示操作以及选择文件、保存文件等操作.
消息提示 dialog.showMessageBoxSync消息提示123456789// @@code-renderer: runner// @@code-props: { height: '130px' }const { dialog } = require('electron')dialog.showMessageBoxSync({ type: 'info', title: '这里是标题', message: '提示内容', detail: '额外信息'})
消息提示与确认1234567891011121314// @@code-renderer: runner// @@code-props: { height: '240px' }const ...
electron工程化
工程化安全性在这里讨论安全性,我们主要分为两种,一种是加载应用内资源,一种是加载远程资源。
对于加载应用内资源代码我们是可控的,需要注意的安全问题和通常的网站差不多,防范XSS攻击等。
而很多情况下,在我们的应用中可能需要加载远程站点(合作网站、用户发送的链接,由第三方开发的小程序等),对于这些很多场景下不可控的代码资源,如果直接给他们所有的访问权限,后果将不可控,因此我们着重讨论加载远程资源可能的问题以及解决方法。
用户发送的链接用户发送的内容并不可控,在这里我们需要多重拦截做保障。
后端维护站点黑名单由后端维护一个站点黑名单,用户发送的每个链接在打开前都请求一次接口,判断到如果是色情网站钓鱼网站等不合法站点,直接提醒用户不要打开。
通过系统浏览器打开可以通过shell.openExternal通过浏览器打开第三方站点
1234// @@code-renderer:runner// @@code-props: { height: '120px', hideRight: true }const { shell } = requ ...
react+ts学习项目及笔记
使用.env文件配置全局环境变量.env 全局默认配置文件,不论什么环境都会加载合并
.env.development 开发环境下的配置文件
.env.production 生产环境下的配置文件
1234<div className="App"> {process.env.REACT_APP_info} </div>
1REACT_APP_info=hello
vue 以 **VUE_APP_ **开头
react 以**REACT_APP_ **开头
在**.gitignore **里面要将环境变量配置文件忽略上传
跨域http-proxy-middleware
vue.config.js12345678910111213141516171819module.exports = { devServer: { open: true, host: 'localhost', port: 8080, https: false, //以上的ip和端口是我们本机的;下面为需要跨域的 proxy: { //配置跨域 '/api': { target: 'https://chp.shadiao.app/api.php', //这里后台的地址模拟的;应该填写你们真实的后台接口 ws: true, changOrigin: true, //允许跨域 pathRewrite: { '^/api': '' //请求的时候使用这个api就可以 } } ...
每天定时用js发送邮件
12345678910111213141516171819202122232425262728293031323334353637383940const nodemailer = require("nodemailer");const { default: Axios } = require("axios");function getHoneyedWords() { var url = "https://chp.shadiao.app/api.php"; return Axios.get(url);}async function sendMail(text) { var user = "1494***9@qq.com"; var pass = "**********";//授权码 var to = "59***4@qq.com"; let transporter = nodemailer.creat ...
js经典案例
https://www.yuque.com/u2417328/rlt5do/kguiwo
vue 过滤器 数值过万处理12345678910111213141516171819202122232425 <span>{{ num|million }}</span><script>export default { filters:{ million: function (value) { //过万处理 let num; if (value > 9999) { //大于9999显示x.xx万 num = Math.floor(value / 1000) / 10 + "W"; } else if (value < 9999 && value > -9999) { num = value; } ...