使用 python flask 时,浏览器同步不会刷新浏览器
browser-sync doesn't refresh the browser when working with python flask
我正在构建一个带有 gulp 和浏览器同步的 flask 项目,以帮助我处理前端问题。但是当我修改我的 Flask 项目中的一些文件时,浏览器不会自动重新加载,我必须点击 F5
手动刷新浏览器才能看到更改。虽然在进行一些更改后我可以从浏览器同步中看到以下输出:
[BS] Reloading Browsers...
这是我的 gulpfile.js
,我在终端
中通过 运行 gulp
启动了 browser-sync
和其他 gulp 任务
var gulp = require('gulp');
var cleanCSS = require('gulp-clean-css');
var sass = require('gulp-sass');
var browserSync = require('browser-sync');
var rename = require('gulp-rename');
var autoprefixer = require('gulp-autoprefixer');
var reload = browserSync.reload;
var exec = require('child_process').exec;
var paths = {
scss: ['scss/*.scss'],
css: ['static/css/*.css', '!static/css/*.min.css']
};
gulp.task('scss', function () {
return gulp.src(paths.scss)
.pipe(sass().on('error', sass.logError))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9'))
.pipe(gulp.dest('static/css'));
});
gulp.task('minify-css', ['scss'], function() {
return gulp.src(paths.css)
.pipe(rename({suffix: '.min'}))
.pipe(cleanCSS({compatibility: 'ie8'}))
.pipe(gulp.dest('static/css'))
.pipe(reload({stream: true}));
});
//Run Flask server
gulp.task('runserver', function() {
var proc = exec('python app.py');
});
gulp.task('browser-sync', ['runserver'], function () {
browserSync({
notify: false,
proxy: "127.0.0.1:5000"
});
});
gulp.task('watch', function () {
gulp.watch(paths.scss, ['minify-css']);
gulp.watch(["templates/**/*.html", "static/**/*.js"]).on('change', reload);
});
gulp.task('default', ['watch', 'browser-sync']);
编辑
目录结构是这样的:
.
├── __init__.py
├── app.py
├── config.py
├── database.py
├── gulpfile.js
├── res
├── routes
│ ├── definitions.py
│ ├── index.py
│ ├── __init__.py
│ ├── users.py
│ └── utilities.py
├── scss
│ ├── main.scss
│ └── pushmenu.scss
├── static
│ ├── css
│ │ ├── main.css
│ │ ├── main.min.css
│ │ ├── pushmenu.css
│ │ └── pushmenu.min.css
│ ├── images
│ └── js
│ └── search.js
└── templates
├── index.html
└── layout.html
实际上您只关注静态和模板目录中 html 和 js 文件的变化。
您可以通过将这些目录添加到您的手表来观看您想要的所有目录
gulp.watch(["templates/**/*.html","static/**/*.js","myflaskdir/**/*.*"]).on('change', reload);
其中 "myflaskdir" 是您的烧瓶目录。
发送您的项目目录结构的打印屏幕,以便我可以详细帮助您。
希望对您有所帮助
更新
重试不是基本目录,所以它一定是 watches.Have 你试过 browserSync.reload() 而不是重新加载?
gulp.task('watch', function () {
gulp.watch(paths.scss, ['minify-css']);
gulp.watch(["templates/**/*.html", "static/**/*.js"]).on('change', browserSync.reload);
});
正如@rick 指出的那样,我需要添加 gulp.watch
部分中的所有文件,以便 browser-sync
可以检测到它。这是对我有用的gulpfile.js
。我把它贴在这里希望它能帮助别人。
var gulp = require('gulp');
var cleanCSS = require('gulp-clean-css');
var sass = require('gulp-sass');
var browserSync = require('browser-sync');
var rename = require('gulp-rename');
var autoprefixer = require('gulp-autoprefixer');
var reload = browserSync.reload;
var exec = require('child_process').exec;
var paths = {
scss: ['scss/*.scss'],
css: ['static/css/*.css', '!static/css/*.min.css']
};
gulp.task('scss', function () {
return gulp.src(paths.scss)
.pipe(sass().on('error', sass.logError))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9'))
.pipe(gulp.dest('static/css'));
});
gulp.task('minify-css', ['scss'], function() {
return gulp.src(paths.css)
.pipe(rename({suffix: '.min'}))
.pipe(cleanCSS({compatibility: 'ie8'}))
.pipe(gulp.dest('static/css'))
.pipe(reload({stream: true}));
});
//Run Flask server
gulp.task('runserver', function() {
var proc = exec('python app.py');
});
gulp.task('browser-sync', ['runserver'], function () {
browserSync({
notify: false,
proxy: "127.0.0.1:5000",
});
});
gulp.task('watch', function () {
gulp.watch(paths.scss, ['minify-css']);
gulp.watch(["templates/**/*.html", "static/**/*.js", "scss/**/*.scss"]).on('change', reload);
});
gulp.task('default', ['watch', 'browser-sync']);
我正在构建一个带有 gulp 和浏览器同步的 flask 项目,以帮助我处理前端问题。但是当我修改我的 Flask 项目中的一些文件时,浏览器不会自动重新加载,我必须点击 F5
手动刷新浏览器才能看到更改。虽然在进行一些更改后我可以从浏览器同步中看到以下输出:
[BS] Reloading Browsers...
这是我的 gulpfile.js
,我在终端
gulp
启动了 browser-sync
和其他 gulp 任务
var gulp = require('gulp');
var cleanCSS = require('gulp-clean-css');
var sass = require('gulp-sass');
var browserSync = require('browser-sync');
var rename = require('gulp-rename');
var autoprefixer = require('gulp-autoprefixer');
var reload = browserSync.reload;
var exec = require('child_process').exec;
var paths = {
scss: ['scss/*.scss'],
css: ['static/css/*.css', '!static/css/*.min.css']
};
gulp.task('scss', function () {
return gulp.src(paths.scss)
.pipe(sass().on('error', sass.logError))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9'))
.pipe(gulp.dest('static/css'));
});
gulp.task('minify-css', ['scss'], function() {
return gulp.src(paths.css)
.pipe(rename({suffix: '.min'}))
.pipe(cleanCSS({compatibility: 'ie8'}))
.pipe(gulp.dest('static/css'))
.pipe(reload({stream: true}));
});
//Run Flask server
gulp.task('runserver', function() {
var proc = exec('python app.py');
});
gulp.task('browser-sync', ['runserver'], function () {
browserSync({
notify: false,
proxy: "127.0.0.1:5000"
});
});
gulp.task('watch', function () {
gulp.watch(paths.scss, ['minify-css']);
gulp.watch(["templates/**/*.html", "static/**/*.js"]).on('change', reload);
});
gulp.task('default', ['watch', 'browser-sync']);
编辑
目录结构是这样的:
.
├── __init__.py
├── app.py
├── config.py
├── database.py
├── gulpfile.js
├── res
├── routes
│ ├── definitions.py
│ ├── index.py
│ ├── __init__.py
│ ├── users.py
│ └── utilities.py
├── scss
│ ├── main.scss
│ └── pushmenu.scss
├── static
│ ├── css
│ │ ├── main.css
│ │ ├── main.min.css
│ │ ├── pushmenu.css
│ │ └── pushmenu.min.css
│ ├── images
│ └── js
│ └── search.js
└── templates
├── index.html
└── layout.html
实际上您只关注静态和模板目录中 html 和 js 文件的变化。
您可以通过将这些目录添加到您的手表来观看您想要的所有目录
gulp.watch(["templates/**/*.html","static/**/*.js","myflaskdir/**/*.*"]).on('change', reload);
其中 "myflaskdir" 是您的烧瓶目录。
发送您的项目目录结构的打印屏幕,以便我可以详细帮助您。
希望对您有所帮助
更新 重试不是基本目录,所以它一定是 watches.Have 你试过 browserSync.reload() 而不是重新加载?
gulp.task('watch', function () {
gulp.watch(paths.scss, ['minify-css']);
gulp.watch(["templates/**/*.html", "static/**/*.js"]).on('change', browserSync.reload);
});
正如@rick 指出的那样,我需要添加 gulp.watch
部分中的所有文件,以便 browser-sync
可以检测到它。这是对我有用的gulpfile.js
。我把它贴在这里希望它能帮助别人。
var gulp = require('gulp');
var cleanCSS = require('gulp-clean-css');
var sass = require('gulp-sass');
var browserSync = require('browser-sync');
var rename = require('gulp-rename');
var autoprefixer = require('gulp-autoprefixer');
var reload = browserSync.reload;
var exec = require('child_process').exec;
var paths = {
scss: ['scss/*.scss'],
css: ['static/css/*.css', '!static/css/*.min.css']
};
gulp.task('scss', function () {
return gulp.src(paths.scss)
.pipe(sass().on('error', sass.logError))
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9'))
.pipe(gulp.dest('static/css'));
});
gulp.task('minify-css', ['scss'], function() {
return gulp.src(paths.css)
.pipe(rename({suffix: '.min'}))
.pipe(cleanCSS({compatibility: 'ie8'}))
.pipe(gulp.dest('static/css'))
.pipe(reload({stream: true}));
});
//Run Flask server
gulp.task('runserver', function() {
var proc = exec('python app.py');
});
gulp.task('browser-sync', ['runserver'], function () {
browserSync({
notify: false,
proxy: "127.0.0.1:5000",
});
});
gulp.task('watch', function () {
gulp.watch(paths.scss, ['minify-css']);
gulp.watch(["templates/**/*.html", "static/**/*.js", "scss/**/*.scss"]).on('change', reload);
});
gulp.task('default', ['watch', 'browser-sync']);