整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

如何通过express托管静态文件(将html页面放

如何通过express托管静态文件(将html页面放到node服务上)

上个express搭建的基础上,


app.use('public',express.static('public'));


在项目目录上创建public文件夹,再创建子文件夹image


test.js

let express=require('express');


let app=express();


app.use('/public',express.static('public'));


app.get('/',function(req,res){

res.send('测试')

})


let server=app.listen(8080,function(){


console.log('服务启动');

})

这时候只要通过访问localhost:8080/public/图片.png

就可以访问到托管到服务上的文件了


同样的道理,我们可以把html文件托管上去,我们的html页面就可以被访问了

在我们项目的根目录下,创建一个html文件,我这里创建的是testReq.html

app.use('/public',express.static('public'))


app.get('/testReq.html', function (req, res) {

res.sendFile( __dirname + "/" + "testReq.html" );

})

//这里的__dirname指的是获取当前文件所在目录的完整目录

者: SnailClimb

Markdown 简历模板样式一览


可以看到我把联系方式放在第一位,因为公司一般会与你联系,所以把联系方式放在第一位也是为了方便联系考虑。

为什么要用 Markdown 写简历?

Markdown 语法简单,易于上手。使用正确的 Markdown 语言写出来的简历不论是在排版还是格式上都比较干净,易于阅读。另外,使用 Markdown 写简历也会给面试官一种你比较专业的感觉。

除了这些,我觉得使用 Markdown 写简历可以很方便将其与PDF、HTML、PNG格式之间转换。后面我会介绍到转换方法,只需要一条命令你就可以实现 Markdown 到 PDF、HTML 与 PNG之间的无缝切换。

下面的一些内容我在之前的一篇文章中已经提到过,这里再说一遍,最后会分享如何实现Markdown 到 PDF、HTML、PNG格式之间转换的方法。

为什么说简历很重要?

  • 假如你是网申,你的简历必然会经过HR的筛选,一张简历HR可能也就花费10秒钟看一下,然后HR就会决定你这一关是Fail还是Pass。
  • 假如你是内推,如果你的简历没有什么优势的话,就算是内推你的人再用心,也无能为力。
  • 另外,就算你通过了筛选,后面的面试中,面试官也会根据你的简历来判断你究竟是否值得他花费很多时间去面试。

写简历的两大法则

目前写简历的方式有两种普遍被认可,一种是 STAR, 一种是 FAB。

STAR法则(Situation Task Action Result):

  • Situation: 事情是在什么情况下发生;
  • Task:: 你是如何明确你的任务的;
  • Action: 针对这样的情况分析,你采用了什么行动方式;
  • Result: 结果怎样,在这样的情况下你学习到了什么。

FAB 法则(Feature Advantage Benefit):

  • Feature: 是什么;
  • Advantage: 比别人好在哪些地方;
  • Benefit: 如果雇佣你,招聘方会得到什么好处。

项目经历怎么写?

简历上有一两个项目经历很正常,但是真正能把项目经历很好的展示给面试官的非常少。对于项目经历大家可以考虑从如下几点来写:

  1. 对项目整体设计的一个感受
  2. 在这个项目中你负责了什么、做了什么、担任了什么角色
  3. 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用
  4. 另外项目描述中,最好可以体现自己的综合素质,比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的。

专业技能该怎么写?

先问一下你自己会什么,然后看看你意向的公司需要什么。一般HR可能并不太懂技术,所以他在筛选简历的时候可能就盯着你专业技能的关键词来看。对于公司有要求而你不会的技能,你可以花几天时间学习一下,然后在简历上可以写上自己了解这个技能。比如你可以这样写:

  • Dubbo:精通
  • Spring:精通
  • Docker:掌握
  • SOA分布式开发 :掌握
  • Spring Cloud:了解

简历模板分享

开源程序员简历模板: https://github.com/geekcompany/ResumeSample(包括PHP程序员简历模板、iOS程序员简历模板、Android程序员简历模板、Web前端程序员简历模板、Java程序员简历模板、C/C++程序员简历模板、NodeJS程序员简历模板、架构师简历模板以及通用程序员简历模板)

上述简历模板的改进版本: https://github.com/Snailclimb/Java-Guide/blob/master/面试必备/简历模板.md

其他的一些小tips

  1. 尽量避免主观表述,少一点语义模糊的形容词,尽量要简洁明了,逻辑结构清晰。
  2. 注意排版(不需要花花绿绿的),尽量使用Markdown语法。
  3. 如果自己有博客或者个人技术栈点的话,写上去会为你加分很多。
  4. 如果自己的Github比较活跃的话,写上去也会为你加分很多。
  5. 注意简历真实性,一定不要写自己不会的东西,或者带有欺骗性的内容
  6. 项目经历建议以时间倒序排序,另外项目经历不在于多,而在于有亮点。
  7. 如果内容过多的话,不需要非把内容压缩到一页,保持排版干净整洁就可以了。
  8. 简历最后最好能加上:“感谢您花时间阅读我的简历,期待能有机会和您共事。”这句话,显的你会很有礼貌。
我们刚刚讲了很多关于如何写简历的内容并且分享了一份 Markdown 格式的简历文档。下面我们来看看如何实现 Markdown 到 HTML格式、PNG格式之间转换。

Markdown 到 HTML格式、PNG格式之间转换

网上很难找到一个比较方便并且效果好的转换方法,最后我是通过 Visual Studio Code 的 Markdown PDF 插件完美解决了这个问题!

安装 Markdown PDF 插件

① 打开Visual Studio Code ,按快捷键 F1,选择安装扩展选项


② 搜索 “Markdown PDF” 插件并安装 ,然后重启


使用方法

随便打开一份 Markdown 文件 点击F1,然后输入 export 然后选择你想要转换的格式即可!

最近的开发当中,我们需要为img标签以及canvas动态绘制的图像提供下载功能,下面是经过探索后我们得出的结果。

一、Canvas 版本

// 下载Canvas元素的图片
function downloadCanvasIamge(selector, name) {
 // 通过选择器获取canvas元素
 var canvas=document.querySelector(selector)
 // 使用toDataURL方法将图像转换被base64编码的URL字符串
 var url=canvas.toDataURL('image/png')
 // 生成一个a元素
 var a=document.createElement('a')
 // 创建一个单击事件
 var event=new MouseEvent('click')
 
 // 将a的download属性设置为我们想要下载的图片名称,若name不存在则使用‘下载图片名称’作为默认名称
 a.download=name || '下载图片名称'
 // 将生成的URL设置为a.href属性
 a.href=url
 
 // 触发a的单击事件
 a.dispatchEvent(event)
}
// 调用方式
// 参数一: 选择器,代表canvas
// 参数二: 图片名称,可选
downloadCanvasIamge('canvas', '图片名称')

二、img 标签版本

// 下载
function downloadIamge(selector, name) {
 // 通过选择器获取img元素
 var img=document.querySelector(selector)
 // 将图片的src属性作为URL地址
 var url=img.src
 var a=document.createElement('a')
 var event=new MouseEvent('click')
 
 a.download=name || '下载图片名称'
 a.href=url
 
 a.dispatchEvent(event)
}
// 调用方式
// 参数一: 选择器,代表img标签
// 参数二: 图片名称,可选
downloadIamge('canvas', '图片名称')

改进版

由于跨域会导致a标签在部分浏览器中会直接打开新标签页,所以改进如下

function downloadIamge(selector, name) {
 var image=new Image()
 // 解决跨域 Canvas 污染问题
 image.setAttribute('crossOrigin', 'anonymous')
 image.onload=function () {
 var canvas=document.createElement('canvas')
 canvas.width=image.width
 canvas.height=image.height
 var context=canvas.getContext('2d')
 context.drawImage(image, 0, 0, image.width, image.height)
 var url=canvas.toDataURL('image/png')
 // 生成一个a元素
 var a=document.createElement('a')
 // 创建一个单击事件
 var event=new MouseEvent('click')
 // 将a的download属性设置为我们想要下载的图片名称,若name不存在则使用‘下载图片名称’作为默认名称
 a.download=name || '下载图片名称'
 // 将生成的URL设置为a.href属性
 a.href=url
 // 触发a的单击事件
 a.dispatchEvent(event)
}
image.src=document.querySelector(selector).src
}
// 调用方式
// 参数一: 选择器,代表img标签
// 参数二: 图片名称,可选
downloadIamge('canvas', '图片名称')

三、总结

我们主要使用的是a标签的download属性, 下面为MDN给出的说明:

此属性指示浏览器下载URL而不是导航到URL,因此将提示用户将其保存为本地文件。

如果属性有一个值,它将在保存提示中用作预先填写的文件名 (用户仍然可以根据需要更改文件名)。对允许的值没有限制,但是/和\被转换为下划线。大多数文件系统限制文件名中的一些标点符号,浏览器会相应地调整建议的名称。

需要注意的地方:

此属性仅适用于同源 URLs。

可以使用 blob: URLs 和 data: URLs 以方便用户下载 JavaScript 方式生成的内容(例如使用在线绘图的Web应用创建的照片)。

如果HTTP头的Content-Disposition:存在,并且赋予了一个和这个属性不同的文件名,HTTP头优先于此属性。

如果这个属性存在 Content-Disposition 被设置为 inline,火狐优先 Content-Disposition,像之前文件名??的情况下,而Chrome则优先 download 属性。