sublime配置,nodejs搭建静态服务器

前言:最近觉得webstorm实在是太吃内存了,每次打开死慢,电脑散热也不好,决心弃掉转投sublime。但是要把sublime配置的顺手真不是一时半会的事,接下来我就记录一下我的配置过程,主要分为三步,就能让sublime得心应手。

  1. 安装主题和插件

    这里我们首先要做的第一件事是先安装package control包管理器,有了它我们就能方便的下载和安装各式插件和主题啦。
    我用的是sublime text3 ,用2的同学请自行上官网查找代码
    ctrl+`(这个键是tab键上的那个)打开控制台窗口,将以下这段代码粘贴进去

    import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
    

    回车,等待一会关掉sublime重启之后,使用ctrl+shift+p打开控制面板并输入package,如果看到下面这种效果就说明成功了。

    Package control安装成功
    Package control安装成功

    接下来可以先安装主题,其实默认主题也不错,但是作为一名代码小怪人怎么会满足这种配色呢,所以我们可以安转主题,可以先去官网找找自己喜欢的主题,记下名字,回到sublime,还是ctrl+shift+p打开控制面板,输入pcip(模糊查询),第一个就是,英文不错的同学应该能认出来这就是安装包的意思。回车确定,等一会弹窗,输入你刚才记下的主题,回车,等一会有个弹窗里面有这样一段代码(不是下面这段,这里只是举个例子),copy下来。

    "color_scheme": "Packages/Theme - Spacegray/base16-eighties.dark.tmTheme",
    "theme": "Spacegray Eighties.sublime-theme" 
    

    打开顶部菜单栏的preference-Setting-user,将刚才复制的代码粘贴进去,保存,然后就搞定啦。这里只是举个例子,

    我用的是Theme -DarkMaterial,挺有科技感的,全屏之后是这样的


    material界面
    material界面

    安装方法跟上面一样,喜欢的话可以试着安装一下。

    接下来我们就可以安装插件了。以下是几个常用插件,跟安转主题差不多,有的需要修改配置文件,有的不需要,这里就不细说了,只列一下,大家自己用package control 下载安装吧。

    • AdvancedNewFile : 快速新建文件
    • sidebar Enbancemens : 增强侧边栏
    • sublimelinter : 语法校验
    • emmet : 快速编写html/css
    • git : 版本控制
    • BracketHighlighter : 符号高亮
    • ColorPicker : 使用取色器改变颜色
    • markdown editingmarkdown preview 实现编写和预览MD
    • AutoFileName : 文件路径自动提示
    • Terminal : 在sublime text 中直接打开命令行
    • csscomb : css属性排序
    • Html-css-js prettify : html/css/js代码格式化

    当然以上只是海量插件中的一小部分,每个人还是要根据自己的需要去安装不同的插件。

  2. 安装完插件就可以爽了吗?还不行,我发现当用sublime打开html文件在浏览器中预览的时候,ajax请求无法发送接收。不像webstorm是打开了一个端口。所以我们想要不只是静态html时,就需要进行一番配置了。这里提供一个思路,把静态文件的工作库放在本地服务器下面。再到sublime里面配置一下预览打开路径就可以了。这里我用nodejs进行演示(你们爱用啥用啥呗,php,java,Python,IIS。。)

    • 首先当然是下载nodejs了,关于怎么在windows下下载安装nodejs请点击这里
      安装配置好之后,在你的工作库里面新建一个文件夹叫做server。由于我是把E盘当做工作库,那我就直接在新建一个文件夹E:/server(此server文件夹我已经上传到github,大家可以下载修改使用,里面还包括了之后说到的bat程序。),
      进入此文件夹,编写三个js文件
      app.js——nodejs主程序入口

        var http = require("http");
        var url = require("url");
        var router = require("./router").router;
        var port = 8000;
      
        var server = http.createServer(function(request,response){
            var pathname = url.parse(request.url).pathname;
            router(pathname,request,response);
        });
      
        server.listen(port);
      
        console.log("Server running at :localhost://"+port);
      
      

      引入各种依赖模块,创建一个服务器并监听8000端口。把http请求路径,以及request请求、response回复传递给route.js(处理路由)

      route.js

        var path = require("path");
        var fs = require("fs");
        var mime = require("./mime").types;
      
        function router (pathname, request, response) {
            if(pathname == "/"||pathname.substring(0,6) == "/index"){
                pathname = "/index.html";
            }
            var realPath = pathname; //这里要注意路径一定要正确
            fs.exists(realPath, function(exists) {
                if(!exists) {
                    response.writeHead(404, {"Content-Type":"text/plain"});
                    response.write("404 not found");
                    response.end();
                }
                else {
                    fs.readFile(realPath, "binary", function(err, file) {
                        if(err) {
                            response.writeHead(500, {"Content-Type":"text/plain"});
                            response.end(err);
                        }       
                        else {
                            var ext = path.extname(realPath);
                            ext = ext ? ext.slice(1):'unknown';
                            var contentType = mime[ext]||"text/plain";
                            response.writeHead(200,{"Content-Type":contentType});
                            response.write(file,"binary");
                            response.end();
                        }
                    })
                }
            })
        };
        exports.router = router;
      

      这里路由主要判断请求路径是否存在于本地,如果不存在就返回404 not found,否则返回文件。这里由于返回头信息要给出文件类型,因此要加上一个mime.js映射表,由于我是把E盘整个盘当做工作库,因此,realPath = pathname,假如你是放在E:/workspace/下面的话,那就让realpath = "/workspace"
      搞定之后,cmd,打开server文件夹,输入node app,运行。如果控制台输出,Server running at :localhost://8000;就说明程序运行成功。
      在E:盘下面放一个index.html文件,到浏览器中输入地址localhost:8000/回车你就能看到这个页面出现在浏览器上了。至此本地静态服务器已经搭建好了,至于nodejs更复杂的功能就需要你我一起去探索了。

    1. 最后一步,设置sublime文件快捷键打开浏览器预览
      首先确保你安装了之前提到的那些插件中的侧边栏增强工具插件——“SideBarEnhancements”。安装完成之后,为sidebarenhance设置默认打开浏览器
      打开"Preference --> Package Settings --> Side Bar --> Settings User-User"。在打开的文件中添加
      {
          "default_browser": "chrome" //这些之中的一个: firefox, aurora,    chrome, canary, chromium, opera, safari
      }
    

    默认浏览器可以是列表中的任意一个。这里我选择的是chrome
    下一步也是至关重要的一步,为sidebarenhancements添加默认的localhost目录。在侧边栏任意文档上点击鼠标右键,选择"project-edit priew urls";在弹出来的文件中添加以下内容

    {
        "E:/":{
            "url_testing": "http://localhost:8000/",
            "url_production": "http://115.159.55.211:8000/"
              }
    }
    

    这里外面的"E:/"是你的项目在磁盘中的路径,由于我的项目都是直接放在E盘下的,所以就直接是E:/了,"url_testing"代表你本地localhost地址,"url_production"为项目的线上地址,请根据具体情况修改。

    最后一步就是,为浏览器绑定热键了
    在sulime 中打开"reference --> Package Settings --> Side Bar --> key Bindings-User"在打开的文件中添加如下内容

 ```
    [
        { "keys": ["ctrl+shift+c"], "command": "copy_path" },
        //chrome
        { "keys": ["f1"], "command": "side_bar_files_open_with",
                "args": {
                    "paths": [],
                    "application": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
                    "extensions":".*" //匹配任何文件类型
                }
         },
        //firefox
        { "keys": ["f2"], "command": "side_bar_files_open_with",
                 "args": {
                    "paths": [],
                    "application": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe",
                    "extensions":".*" 
                }
        },
        //safari
        { "keys": ["f3"], "command": "side_bar_files_open_with",
                "args": {
                    "paths": [],
                    "application": "C:\\Program Files (x86)\\Safari\\safari.exe",
                    "extensions":".*"
                }
         },
         //opera
         { "keys": ["f4"], "command": "side_bar_files_open_with",
                 "args": {
                    "paths": [],
                    "application": "D:\\opera\\launcher.exe",
                    "extensions":".*"
                }
        },
        {
            "keys": ["alt+f1"],
            "command": "side_bar_open_in_browser",
            "args": {
                        "paths": [],
                        "type": "testing",
                        "browser": "chrome"
                    }
        },
        {
            "keys": ["alt+f2"],
            "command": "side_bar_open_in_browser",
            "args": {
                        "paths": [],
                        "type": "testing",
                        "browser": "firefox"
                    }
        },
        {
            "keys": ["alt+f3"],
            "command": "side_bar_open_in_browser",
            "args": {
                        "paths": [],
                        "type": "testing",
                        "browser": "safari"
                    }
        }
    ]

 ```
 key里面设置的是热键和对应的命令
 这里我就拿chrome举例,我分别设置了F1,和alt+F1。f1代表以某个程序打开此文件,application里面要填写程序的正确路径地址。
 alt+f1则代表以浏览器打开此文件,browser里面填写浏览器名,还记得之前我们配置的打开地址吗?这里type:testing即是以当时我们设置的地址作为前缀打开。

 可能你已经发现了问题,那就是如果要能生效,必须保持nodejs的那个app程序保持运行,这样在每次打开sublime编程之前都要开一次,有点麻烦是不。有个方法是,编写一个bat程序,加入开机启动服务,让每次开机之后就自动启动这个node程序。

至此,我们的静态服务器和sublime已经配置完了,开始新的编程之旅吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,601评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,367评论 1 305
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,249评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,539评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,967评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,929评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,098评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,825评论 0 207
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,609评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,796评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,282评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,603评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,277评论 3 242
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,159评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,959评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,079评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,874评论 2 277

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,108评论 18 139
  • Sublime Text:一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插...
    追風逸少丶阅读 11,256评论 1 34
  • Sublime Text:一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插...
    晚晴幽草阅读 710,357评论 149 1,114
  • 下载地址:Sublime Text 原则上收费的,但可以试用,试用期是免费的,在试用期间会提示你购买. packa...
    万物皆可搬阅读 9,491评论 2 9
  • Sublime Text:一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插...
    xiaotao123阅读 9,424评论 0 27