git+nodejs搭建web静态服务器

2017-06-11  本文已影响138人  风之帆

搭建web静态服务器

创建项目根目录(或者从github仓库clone)并创建node项目

初始化

执行此步骤前提条件为:
①有过项目,但是使用环境更改的,比如更换电脑等
②没有项目,但是有package.json文件的

ps:以上条件不满足者从头老老实实搭建项目结构+安装各种插件(下文)  
    满足条件的还需要两个js配置文件,请拉倒最下面附录!

安装express包,属于项目依赖

安装gulp包,属于开发依赖

取消默认扫描

此步骤针对webstorm以及类似的编译器:由于上传文件和检查代码过程中编译器会自动检索node_modules包,因为操作量巨大极可能导致编译器卡死甚至电脑死机现象,此步骤必点!

创建项目详细结构(从原本项目仓库clone者忽略这步骤)

gulp 基本操作

基本命令

配置文件gulpfile.js[不可改,特定名称]

安装所需插件


Stylus

css预处理框架,使用表达式生成css
另外常用两款框架:
sass 最早最成熟的css预处理语言
less 受sass影响很大且使用css语法,易上手

手动编译

    css转换成styl文件:
    stylus --css css所在目录/css文佳全称 styl文件目录/styl文件全称
    ps:若输出到同一目录下的相同名称的styl文件,则不需要styl文件目录/styl文件全称

自动编译

以下步骤当项目静态服务器搭建好后应该已经执行完,不用去管

Stylus语法

单行注释不会被编译到css中,而多行注释会被自动编译到css中

```stylus
for row in 1..5
    tr:nth-child({row})
      height 10px*row
```
    @font-face 引入字体文件
    
    @font-face
        font-family myFont(自己取名)
        src url()
            url()
            url()                    
    PS:通常字体文件共4个,全部导入,为了满足不同的浏览器
    -------------------------------------------------
    @media 指定媒体类型
    
    @media
        all 所有类型
        screen 电脑屏幕
        print 打印机
    
    max-width  
    min-width
    [max-]device-width/device-height 设备宽度
    
    @media 关键词:  
    and/only 限定关键词/not  
    
    @media only screen and (min-width:800px){}
    当浏览器屏幕大于800px时所表现的样式,这行代码要写在整体样式后,不然会被覆盖
    -------------------------------------------------
    @keyframes myAnimate(自己取名)
        0%
            ...
        50%
            ...
        100%
            ...
        0%
            ...


附录

项目结构

若你使用的项目和我不同,为了实现自动编译和自动刷新效果,请在两个js文件里做更改

gulpfile.js

/**
 * Created by Administrator on 2017/01/04.
 */
var gulp = require('gulp');
var stylus = require('gulp-stylus');
// var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var nodemon = require('gulp-nodemon');
var browserSync = require('browser-sync').create();
var reload = browserSync.reload;
//编写一个编译stylus任务
gulp.task('stylus',function () {
    //stylus文件及其所有子目录的文件
    return gulp.src('./stylus/**/*.styl')
    //编译stylus文件
        .pipe(stylus())
        //输出stylus编译后的文件
        .pipe(gulp.dest('./public/css/'))
});
gulp.task('minifycss',['stylus'],function () {
    return gulp.src('./public/css/**/*.css')
        .pipe(minifycss())
        .pipe(gulp.dest('./public/mincss/'))
});
gulp.task('uglify',function () {
    return gulp.src('./public/js/**/*.js')
        .pipe(uglify())
        .pipe(gulp.dest('./public/minjs/'))
});
/*不用每次都启动app.js,只需要启动watcher任务即可*/
gulp.task('nodemon',function (nm) {
    var flag = false;
    return nodemon({
        script:'./server.js'
    }).on('start',function () {
        if(!flag){
            nm();
            flag = true;
        }
    })
});
gulp.task('browserSync',['nodemon'],function () {
    browserSync.init({
        proxy:{
            target:'http://127.0.0.1:16909'
        },
        files:['*'],
        port:9888,
        open:false
    })
});
//动态监听
gulp.task('watcher',['browserSync','stylus'],function () {
    gulp.watch('./stylus/**/*.styl',['stylus']);
    gulp.watch('./public/css/**/*.css').on('change',function () {
        reload();
    })
});

server.js

var path = require('path');
//引入express依赖模块,用来启动静态服务器
var express = require('express');
/*console.log(__dirname);*/
var proxy = require('http-proxy-middleware');
//实例化express
var app = express();
app.use('/api',proxy({
    target:'http://122.10.30.153:9901',
    pathRewrite:{
        '^/api':'/'
    }
}));
//指定访问页面路径
app.use('/',express.static(path.join(__dirname,'views')));
app.use('/public',express.static(path.join(__dirname,'public')));
//指定端口号,建议3000以上,回调函数可以不写
app.listen(16909,function (){
    console.log('server run at port 16909')
});

//模块导出
module.expotrs = app;

package.json

{
  "name": "h5",
  "version": "1.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },
  "author": "yyf",
  "license": "ISC",
  "dependencies": {
    "express": "^4.14.0"
  },
  "devDependencies": {
    "browser-sync": "^2.18.6",
    "gulp": "^3.9.1",
    "gulp-nodemon": "^2.2.1",
    "gulp-stylus": "^2.6.0",
    "gulp-uglify": "^2.0.0",
    "http-proxy-middleware": "^0.17.3"
  }
}

<div class="time_updated">此文章最近更新与 2017-1-15 16:30:38</div>

上一篇 下一篇

猜你喜欢

热点阅读