Django打造大型企业官网(二)
三、项目环境搭建
3.1.创建项目环境和安装包
创建django项目
mkvirtualenv DjangoProject workon DjangoProject pip install -i https://pypi.douban.com/simple django==2.0.2
进front目录
npm init #初始化一个package.json配置文件文件
在package.json文件中添加要安装的包
"devDependencies": {
"browser-sync": "^2.26.7",
"gulp": "^4.0.2",
"gulp-cache": "^1.1.2",
"gulp-concat": "^2.6.1",
"gulp-cssnano": "^2.1.3",
"gulp-imagemin": "^6.0.0",
"gulp-rename": "^1.4.0",
"gulp-sync": "^0.1.4",
"gulp-tinypng-nokey": "^1.1.0",
"gulp-uglify": "^3.0.2",
"gulp-watch": "^5.0.1"
}
{
"name": "xfz_front",
"version": "1.0.0",
"description": "xft front code",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "zhang_derek",
"license": "ISC",
"devDependencies": {
"browser-sync": "^2.26.7",
"gulp": "^4.0.2",
"gulp-cache": "^1.1.2",
"gulp-concat": "^2.6.1",
"gulp-cssnano": "^2.1.3",
"gulp-imagemin": "^6.0.0",
"gulp-rename": "^1.4.0",
"gulp-sync": "^0.1.4",
"gulp-tinypng-nokey": "^1.1.0",
"gulp-uglify": "^3.0.2",
"gulp-watch": "^5.0.1"
}
}
安装包,自动识别package.json文件中需要的包
npm install
项目目录结构

3.2.编写gulpfile.js文件
gulp.js
var gulp = require("gulp");
var cssnano = require("gulp-cssnano");
var rename = require("gulp-rename");
var uglify = require("gulp-uglify");
var concat = require("gulp-concat");
var tinypng_nokey = require('gulp-tinypng-nokey');
var bs = require("browser-sync").create();
//html任务
gulp.task("html",done =>{
gulp.src("./templates/**/*.html")
.pipe(bs.reload({
stream: true
}));
done();
});
// css任务
gulp.task("css",done =>{
gulp.src("./src/css/*.css")
.pipe(cssnano()) //压缩
.pipe(rename({"suffix":".min"})) //加后缀名
.pipe(gulp.dest('./dist/css/')) //压缩后存放的路径
.pipe(bs.reload({
stream: true
}));
done();
});
//js任务
gulp.task("js",done =>{
gulp.src("./src/js/*.js")
.pipe(uglify({
'toplevel':true,
'compress':{
'drop_console':true
}
}))
.pipe(rename({"suffix":".min"}))
.pipe(gulp.dest('./dist/js/'))
.pipe(bs.reload({
stream: true
}));
done();
});
//images任务
gulp.task("images",done =>{
gulp.src("./src/images/*.*")
.pipe(tinypng_nokey())
.pipe(gulp.dest('./dist/images/'))
.pipe(bs.reload({
stream: true
}));
done();
});
//监听
gulp.task('auto',function () {
gulp.watch("./templates/**/*.html",gulp.series('html'));
gulp.watch("./src/css/*.css",gulp.series('css'));
gulp.watch("./src/js/*.js",gulp.series('js'));
gulp.watch("./src/images/*.*",gulp.series('images'));
});
//初始化
gulp.task("bs",function () {
bs.init({
'server':{
'baseDir':'./',
}
})
});
//创建一个默认任务
gulp.task("default",gulp.parallel('bs','auto'));
3.3.css改为sass
安装sass包
npm install gulp-sass --save-dev

把index.css改成index.scss文件

gulpfile.js修改
var sass = require("gulp-sass");
// css任务
gulp.task("css",done =>{
gulp.src("./src/css/*.scss")
.pipe(sass().on("error",sass.logError))
.pipe(cssnano()) //压缩
.pipe(rename({"suffix":".min"})) //加后缀名
.pipe(gulp.dest('./dist/css/')) //压缩后存放的路径
.pipe(bs.reload({
stream: true
}));
done();
});
//监听
gulp.task('auto',function () {
gulp.watch("./templates/**/*.html",gulp.series('html'));
gulp.watch("./src/css/*.scss",gulp.series('css'));
gulp.watch("./src/js/*.js",gulp.series('js'));
gulp.watch("./src/images/*.*",gulp.series('images'));
});
var gulp = require("gulp");
var cssnano = require("gulp-cssnano");
var rename = require("gulp-rename");
var uglify = require("gulp-uglify");
var concat = require("gulp-concat");
var tinypng_nokey = require('gulp-tinypng-nokey');
var bs = require("browser-sync").create();
var sass = require("gulp-sass");
//html任务
gulp.task("html",done =>{
gulp.src("./templates/**/*.html")
.pipe(bs.reload({
stream: true
}));
done();
});
// css任务
gulp.task("css",done =>{
gulp.src("./src/css/*.scss")
.pipe(sass().on("error",sass.logError))
.pipe(cssnano()) //压缩
.pipe(rename({"suffix":".min"})) //加后缀名
.pipe(gulp.dest('./dist/css/')) //压缩后存放的路径
.pipe(bs.reload({
stream: true
}));
done();
});
//js任务
gulp.task("js",done =>{
gulp.src("./src/js/*.js")
.pipe(uglify({
'toplevel':true,
'compress':{
'drop_console':true
}
}))
.pipe(rename({"suffix":".min"}))
.pipe(gulp.dest('./dist/js/'))
.pipe(bs.reload({
stream: true
}));
done();
});
//images任务
gulp.task("images",done =>{
gulp.src("./src/images/*.*")
.pipe(tinypng_nokey())
.pipe(gulp.dest('./dist/images/'))
.pipe(bs.reload({
stream: true
}));
done();
});
//监听
gulp.task('auto',function () {
gulp.watch("./templates/**/*.html",gulp.series('html'));
gulp.watch("./src/css/*.scss",gulp.series('css'));
gulp.watch("./src/js/*.js",gulp.series('js'));
gulp.watch("./src/images/*.*",gulp.series('images'));
});
//初始化
gulp.task("bs",function () {
bs.init({
'server':{
'baseDir':'./',
}
})
});
//创建一个默认任务
gulp.task("default",gulp.parallel('bs','auto'));
Django打造大型企业官网(二)的更多相关文章
- 超细讲解Django打造大型企业官网
本文为知了课堂黄勇老师讲的<超细讲解Django打造大型企业官网>的笔记. 第一章 Django预热 1.创建virtualenv虚拟环境 2.URL组成部分详解 3.Django介绍 4 ...
- Django打造大型企业官网
第1章 Django预热 1-为什么需要虚拟环境 2-virtualenv创建虚拟环境 3-virtualenvwrapper使用 4-URL组成部分讲解 5-课程准备工作 6-Django介绍 第2 ...
- Django打造大型企业官网(一)
一.nvm的安装 (1)下载:nvm1.16 (2)安装完成后添加环境变量 C:\Users\Administrator\AppData\Roaming\nvm (3)修改settings.txt,将 ...
- Django打造大型企业官网(八)
4.16.侧边栏标题和广告位布局完成 templates/news/index.html <div class="sidebar-wrapper"> <div c ...
- Django打造大型企业官网(七)
4.13.新闻列表tab栏布局完成 templates/news/index.html <div class="list-outer-group"> <ul cl ...
- Django打造大型企业官网(六)
4.9.根据轮播图个数修改小圆点数量 src/js/index.js function Banner() { this.bannerWidth = 798; } Banner.prototype.in ...
- Django打造大型企业官网(五)
4.6.切换轮播图的箭头样式以及显示和隐藏 templates/news/index.html <span class="arrow left-arrow">‹< ...
- Django打造大型企业官网(四)
4.3.轮播图布局和样式 templates/news/index.html <div class="news-wrapper"> <div class=&quo ...
- Django打造大型企业官网(三)
四.前端首页 4.1.导航条实现 (1)templates/new/index.html <!DOCTYPE html> <html lang="en"> ...
随机推荐
- DEALLOCATE - 删除一个准备好的查询
SYNOPSIS DEALLOCATE [ PREPARE ] plan_name DESCRIPTION 描述 DEALLOCATE 用于删除前面准备好的查询. 如果你没有明确 DEALLOCATE ...
- ansible相关说明
2.ansible相关说明 2.1.ansible相关命令 ansible:定义并运行简单任务,主要执行ad-hoc命令 ansible-config:查看.编辑.管理ansible配置 ansibl ...
- idea拉出Output窗口和还原窗口
拉出:按住标题可以拖出 效果: 还原:点击restore layout
- Linux环境下验证码不显示F12报500
前言: 项目之前部署在linux系统上进行测试,今天重新部署的时候,重启了tomcat然后部署新的版本项目,结果登录页面验证码不显示,在浏览器F12页面显示的是500错误.网上查了很多方法,都没效果 ...
- form 表单onclick事件 禁止表单form提交
最近遇到一次处理form数据的过滤,采用了button的onclick事件来检查,发现return false后表单仍然提交了. 于是仔细研究了下onclick.onsubmit.submit集合函数 ...
- PHP 真值与空值
本文参考 http://php.net/manual/en/types.comparisons.php. 1. isset bool isset ( mixed $var [, mixed $... ...
- STM32F407 串口通信:分类&常见接口 个人笔记
串行通信的分类 常见串行通信接口 STM32 UART STM32串口异步通信需要定义的参数: ① 起始位 ② 数据位(8位或者9位) ③ 奇偶校验位(如果有的话是第9位) ④ 停止位(1,15,2位 ...
- Java AOP
AOP 今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之.翻译过来 ...
- ElasticSearch全文搜索引擎(A)
文章:[Elasticsearch] 全文搜索 (一) - 基础概念和match查询 全文检索,是从最初的字符串匹配和简单的布尔逻辑检索技术,演进到能对超大文本.语音.图像.活动影像等非结构化数据进行 ...
- HDU 2442
状态压缩DP , 和HDU2280极其相似 #include <cstdio> #include <cstring> #include <iostream> usi ...