精华内容
下载资源
问答
  • 使用 Electron 打包 Web 应用

    万次阅读 2020-06-05 11:18:53
    1、 npm 初始化项目 新建一个文件夹作为项目文件夹 使用 npm init 初始化文件夹 生成一个 package.json 文件 修改 package.json 里面的 "main": "index.js" 2、 安装 electron 到项目文件夹 在项目文件夹下执行以下...

    1、 npm 初始化项目

    新建一个文件夹作为项目文件夹
    使用 npm init 初始化文件夹
    生成一个 package.json 文件
    修改 package.json 里面的 "main": "index.js"

    2、 安装 electron 到项目文件夹

    在项目文件夹下执行以下命令

    npm install --save-dev electron
    
    /** 
      * 这一步我用 cnpm 安装的,cnpm 的具体安装方法可百度
      * --save-dev 可以自动更新 package.json 里面的 "devDependencies", 
      * 不用自己手动更新
     */
    

    3、 新建一个 index.js 入口文件

    在项目文件夹里面新建一个 index.js 文件
    并在里面复制以下代码

    const { app, BrowserWindow, Menu } = require('electron')
    
    function createWindow () {   
      // 隐藏菜单栏
      Menu.setApplicationMenu(null)
      // 创建浏览器窗口
      const win = new BrowserWindow({
        icon: './logo.ico', // 设置窗口左上角的图标
        show: false,
        webPreferences: {
          nodeIntegration: true
        }
      })
    
      // 下面这两行代码配合上面 new BrowserWindow 里面的 show: false,可以实现打开时窗口最大化
      win.maximize()
      win.show()
    
      // 并且为你的应用加载index.html
      win.loadFile('index.html')
    
    }
    
    // Electron会在初始化完成并且准备好创建浏览器窗口时调用这个方法
    // 部分 API 在 ready 事件触发后才能使用。
    app.whenReady().then(createWindow)
    
    // 当所有窗口都被关闭后退出
    app.on('window-all-closed', () => {
      // 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
      // 否则绝大部分应用及其菜单栏会保持激活。
      if (process.platform !== 'darwin') {
        app.quit()
      }
    })
    
    app.on('activate', () => {
      // 在macOS上,当单击dock图标并且没有其他窗口打开时,
      // 通常在应用程序中重新创建一个窗口。
      if (BrowserWindow.getAllWindows().length === 0) {
        createWindow()
      }
    })
    
    // 您可以把应用程序其他的流程写在在此文件中
    // 代码 也可以拆分成几个文件,然后用 require 导入。
    

    4、 新建一个 index.html 文件作为项目文件

    在项目文件夹里面新建一个 index.html 文件,这个跟 index.js 文件里面声明的 win.loadFile('index.html') 是一致的

    5、 安装 electron-packager 进行 web 应用打包

    在项目文件夹中使用以下命令安装 electron-packager

    npm install --save-dev electron-packager
    
    // 这里同样可以使用 cnpm 来进行安装
    

    6、 在 packager.json 中添加相应的 script 脚本

    ** 注意: **
    ** 在执行 npm run packager 的时候可能会遇到卡住的情况,**
    ** 这时候只要设置一下 eletron_mirror 就好了 **
    npm config set registry https://registry.npm.taobao.org/
    npm config set ELECTRON_MIRROR http://npm.taobao.org/mirrors/electron/

    start 这一行可以使用 npm run start 来进行快速的打开运行你的web应用
    packager 这一行使用 npm run packager 来进行应用的打包,生成 .exe 等可执行文件

    "scripts": {
        "start": "electron .",
        "packager": "electron-packager . 'app' --platform=win32 --arch=x64 --out=./build --electron-version 9.0.2 --app-version 1.0.0 --overwrite --icon=./logo.ico"
      },
    

    然后执行一下 npm run packager 就可以了

    展开全文
  • web应用框架 负责处理http请求,响应静态文件,常见的有Apache,Nginx以及微软的IIS. 负责处理逻辑的服务器。比如php、python的代码,是不能直接通过nginx这种web服务器来处理的,只能通过应用服务...

     

            web服务器(给静态网页)                应用服务器(主要处理逻辑层)                       web应用框架
    负责处理http请求,响应静态文件,常见的有Apache,Nginx以及微软的IIS. 负责处理逻辑的服务器。比如php、python的代码,是不能直接通过nginx这种web服务器来处理的,只能通过应用服务器来处理,常见的应用服务器有uwsgi、tomcat等。 一般使用某种语言,封装了常用的web功能的框架就是web应用框架,flask、Django以及Java中的SSH(Structs2+Spring3+Hibernate3)框架都是web应用框架

    展开全文
  • 有状态的WEB应用

    千次阅读 2020-10-24 09:33:36
    简介 ...换句话说,在你的各次请求之间,服务器是不会保留你的 “状态” ...当我们看看我们熟悉的 web 应用,我们会觉得这些应用大都是有状态.比如,我们登录到 Facebook 或者 Twitter ,会看到我们的用户名显示在网页上

    简介

    HTTP 协议是无状态的。换句话说,在你的各次请求之间,服务器是不会保留你的 “状态” 信息。

    每一次请求都被认为是一次全新的请求,不同的请求之间并不知道对方的存在.这种” 无状态性 “使得 HTTP 和互联网都是 “去中心化” 的,不会轻易被人掌控。 但也是因为这种属性,使得 web 开发者在开发有状态的 web 应用时十分的困难。

    当我们看看我们熟悉的 web 应用,我们会觉得这些应用大都是有状态.比如,我们登录到 Facebook 或者 Twitter ,会看到我们的用户名显示在网页上方,这表示我们的目前状态是通过了身份验证。如果我们在页面上随便点点(对服务器发起新的请求),我们并不会突然就退出登录了。 服务器返回的响应页面里依然有我们的用户名显示着,这样看来这些应用似乎都会维持它们的状态。

    在本章,我们会通过讨论一下这是怎么回事,看看 web 开发者常用的实现 “有状态” 体验的技术手段。同时,也会讨论一些用于高效展示动态页面信息的技术。会讨论以下技术:

    • 会话( session )
    • Cookies
    • 异步 javascript 调用( AJAX )

    一个有状态的应用

    让我们来看一个有状态的应用。当你发起一个请求到http://www.reddit.com的时候,主页是这样的:


    然后输入你的用户名和密码进行登录:

    登录后,在页面上方你就会看到你的用户名,表示你已经成功通过身份验证。如果你刷新页面,就会向http://www.reddit.com服务器发起一个新的请求,你会看到,页面还是那个样子,你的登录状态还在。这是怎么回事呢? HTTP 不是一个无状态协议么?服务器是怎么知道你的用户名,并动态显示在页面上的?哪怕刷新页面发起新的请求也不影响你的登录状态。这种情况非常常见,我们都习以为常了。 这就是你的网络购物车在你往里加新商品的时候如何保留着你之前的选择,有时候哪怕过了几天,你也能看到你购物车里的东西。这就是 Gmail 如何认出你,并在页面上显示针对你名字的欢迎信息,所有的现代 web 应用都是这样工作的。

    会话 ( session )

    显然,人们可以把这个无状态的 HTTP 协议通过某种方式保持状态。在客户端(一般就是指浏览器)的帮助下,HTTP 的行为会让人觉得它会在客户端与服务器之间维护一个有状态的连接,尽管实际并没有。达到这种效果的一个办法就是, 服务器在发送响应数据给客户端的时候带一个唯一的令牌(英文叫 token,就是一串数)。随后不论何时客户端向服务器发起请求的时候都把这个令牌附加在后面,让服务器能够辨识这个客户端。在 web 开发领域我们把这个来回传递的令牌叫做会话标识符( session identifier )。

    这种在客户端与服务器之间传递会话 id的机制,能让服务器创建一种各次请求之间的持续连接状态。Web 开发人员利用这种人造的状态,来构建复杂的应用程序。即使这样,每一个请求严格上来说还是无状态的,各次请求之间并不知道彼此的存在。

    这种人造状态,会有几个后果。第一,必须检查每个请求,查看它是否包含会话标识符。第二,如果请求有会话标识符,也就是有一个会话 id,服务器必须检查每一个会话 id ,确保这些会话 id 是没有过期的,也就是服务器需要维护一些关于如何处理会话过期,如何存储会话数据的规则。第三,服务器要基于这个会话 id 取出这个会话的数据。最后,服务器要根据取出的会话数据重新创建应用程序的状态( 比如,一个请求对应的 HTML ),然后将其作为响应返回给客户端。

    这就意味着服务器必须非常辛勤的工作,来模拟这个有状态的用户体验。每一个请求都会有一个独立的响应,哪怕这次的响应跟前一个响应没有任何区别。举个例子,如果你登录到 Facebook 上,服务器会给你一个响应,生成你看到的主页。这个响应是一个十分复杂的 HTML 页面。Facebook 的服务器会把页面上所有照片和留言的赞和评论都组合起来,然后显示在你的时间线上。生成这样一个页面的成本非常高。现在,如果你点了某个照片下面的” 赞 “链接,理论上,Facebook 会重新生成整个页面,它会把你赞过的照片的被赞数加 1,然后把整个 HTML 作为响应返回给你,尽管除了这个赞数以外大部分内容都没有改变。 庆幸的是,实际中 Facebook 使用 Ajax 代替了全页面刷新。不然的话,刷新一个页面会花费很长时间。

    服务器使用了很多先进的技术来优化会话和实现安全机制,不过这些话题都超出了本书的范围,暂且放下。现在我们来聊一个常用的存储会话信息的方法: 浏览器 cookie 。

    Cookies

    cookie 就是在一个请求/响应周期内,服务器发送给客户端(通常就是浏览器),并存储在客户端的一段数据。Cookies 或者 HTTP cookies,就是存储在浏览器里包含着会话信息的小文件。默认情况下,大部分浏览器的 cookies 都是启用的。当你第一次访问一个网站的时候,服务器会给你发送会话信息并将其存储在你本地电脑浏览器的 cookie 里。要注意的是真正的会话数据是存在服务器上的。在客户端发起每一个请求的时候,服务器就会比对客户端的 cookie 和服务器上的会话数据,用来标识当前的会话。通过这种方法,当你再次访问同一个网站的时候,服务器就会通过 cookie 和里面的信息来认出你的会话。

    我们来看一个真实的案例。用审查器看看 cookies 是如何被创建的。我们要向http://www.yahoo.com发起一个请求。要注意的是,如果你的浏览器里已经有了 Yahoo 的 cookie ,你可能需要换一个网站。

    保持审查器打开(页面上右键,点击 “查看元素 “),输入这个网址,然后看看我们的请求头部:

    注意,里面没有任何有关 cookies 的东西,接下来我们看看响应头部:

    你会看到有个set-cookie头部把 cookie 数据加到响应里。 在首次访问这个网站的时候这个 cookie 数据会被设置。最后,我们发起一个相同的请求然后再来看看请求头部:

    你会看到有个cookie头部出现了(注意这个是请求头部,就是说这是要从你的客户端发送到服务器的)。 里面的内容是上一个响应头部set-cookie的值。这一小段数据,会出现在你每一个发起的请求里,用来唯一标识你 --- 或者说的清楚点, 标识你的客户端,也就是你的浏览器。cookie 是存在浏览器里的。现在,就算你关掉浏览器,关掉电脑, cookie 里的信息也不会消失的。

    现在让我们回到本章最初的那个例子,关于 Reddit 和其他 web 应用是如何在我们发起的一个又一个请求中记住我们的登录状态。记住,每一个请求都是独立的, 不知道彼此存在的。 那么问题来了,应用程序是如何 “记住” 我们的登录状态呢?如果你要跟着做, 保持审查器打开,然后按照下面的步骤来:

    1. 点击 resources 标签然后访问http://www.reddit.com
    2. 把 cookies 那部分展开, 然后点击www.reddit.com,你就能在 value 那一列看到第一次发起请求后服务器返回给我们的 cookie 了:
    3. 然后登录,你应该能看到在最后一行出现了一个唯一的会话 id 。这个会话 id 会存在你浏览器的 cookie 里,从此后你每一个到 Reddit.com 的请求都会附上这个会话 id 。

    现在每一个请求都会包含这个会话 id ,这样服务器就能唯一确认你这个客户端啦。当服务器接收到一个带有会话 id 的请求,它就会根据这个 id 去找对应的数据,在这个对应的数据里就有服务器"记住"的客户端的状态,或者说就是这个会话 id 的状态。

    会话数据存在哪里?

    一句话:服务器上的某个地方。有时候,存在内存里,其他时候,可能会存在某个持久化存储介质上,比如数据库或者键 / 值存储。会话数据存在哪里不是我们现在需要关心的。现在重要的是要理解会话 id 存储在客户端,它是访问存储在服务器上的会话数据的 “钥匙”。web 应用就是这样解决 http 无状态这个问题的。

    还有一点非常重要,在一个会话里发出的会话 id 是唯一的,而且有一个很短的过期时间。对上面的例子来说,在会话过期后你需要重新登录。如果我们退出登录, 会话 id 就会消失。

    如果你手动删掉会话 id 也是同样的效果(在审查器里,右键 cookies 然后删除它),这样就退出登录了。

    简单回顾一下,会话数据是由服务器生成并存储在服务器上,会话 id 以 cookie 的形式发送到客户端上。我们还看到了 web 应用程序如何充分利用这些来模拟在 web 上的有状态体验。

    AJAX

    最后,我们来简单看看 AJAX 和它在 HTTP 请求/响应周期里的作用.AJAX 是”异步 javascript 和 XML “ 的简称( Asynchronous JavaScript and XML )。它的主要特点就是允许浏览器发送请求和处理响应的时候不用刷新整个页面。举个例子,如果你登录到 Facebook 上,服务器会给你一个响应,生成你看到的主页。 这个响应是一个十分复杂的 HTML 页面。Facebook 的服务器会把各种信息组合起来,显示在你的时间线上。在前面的讨论中,我们知道,为每一个请求都重新生成一次页面的成本是非常高的(记住,你的每一个动作,点个链接,提交个表单,都会发起一个新的请求)。

    当使用 AJAX 的时候,所有客户端发送的请求都是异步的,就是说页面不会刷新。举个例子,当我们在 google 上搜索的时候:

    • 访问 Google 主页http://www.google.com,然后打开审查器,看 Network 标签,里面内容是空的。
    • 当你开始搜索的时候,你会在 Network 标签看到请求如潮水般发起。

    很明显发起了很多请求,但是你应该能注意到,页面没有整个刷新。 然而这个 Network 标签的内容让我们看清: 每敲一个字都会发起一个新的请求,也意味着你每按一下键都会触发一个 AJAX 请求。这些请求的响应会通过一些回调来处理。你可以这样理解回调,就是你把一些逻辑存放在某个函数里,当某个条件被触发之后再回来执行你前面存放的逻辑。在本例中,当响应返回的时候,回调就会被触发。你可能已经猜到了,回调函数会用新的搜索结果去更新网页上的 HTML 。

    我们不去深究回调到底是什么样的或者如何发起一个 AJAX 请求。最主要的一点要记住的是,AJAX 请求就像是普通请求:发送到服务器的请求依然跟普通请求一样有着一个 HTTP 请求该有的所有组成部分,并且服务器处理 AJAX 请求的方法跟处理普通请求也是一样的。唯一不同就是,不是通过浏览器刷新来处理响应,而通常由客户端的一些 javascript 代码来处理。

    小结

    本章我们介绍了一些 web 开发者用来在无状态的 HTTP 协议上构建有状态应用的技术。你学习了 cookie 和会话,以及现代 web 应用如何记住客户端的状态。也使用审查器了解了 cookies 和会话 id 。最后,了解了 AJAX 在 web 应用里展示动态内容时所扮演的角色。

    展开全文
  • asp.net web应用的前端设计

    千次下载 热门讨论 2014-09-09 02:19:08
    asp.net web应用的前端设计
  • 概念 web服务器:负责处理http请求,响应静态文件,常见的有Apache,Nginx以及微软的... 应用服务器:负责处理逻辑的服务器。... web应用框架:一般使用某种语言,封装了常用的web功能的框架就是web应用框架,flas...

     

    概念

    • web服务器:负责处理http请求,响应静态文件,常见的有ApacheNginx以及微软的IIS.
    • 应用服务器:负责处理逻辑的服务器。比如phppython的代码,是不能直接通过nginx这种web服务器来处理的,只能通过应用服务器来处理,常见的应用服务器有uwsgitomcat等。
    • web应用框架:一般使用某种语言,封装了常用的web功能的框架就是web应用框架flaskDjango以及Java中的SSH(Structs2+Spring3+Hibernate3)框架都是web应用框架

     

     

    关系图

    展开全文
  • web服务器和web应用服务器的区别

    千次阅读 2018-06-10 20:22:43
    首先,web服务器和web应用服务器不是同一个概念。起初,我也把两者混为一谈。现在说说自己对这两个的理解,如有不对之处,欢迎指出。 web应用服务器 在java web开发时,最早接触的web服务器是tomcat,其实tomcat是...
  • Windows部署web应用服务器Jboss中间件

    万次阅读 2017-10-20 10:52:34
    1、免安装版JBOSS_7.1兼容JDK1.8以下 JDK1.7或低版本JDK; 2、配置电脑环境变量JBOSS_HOME=安装路径,在path变量后面添加;%JBOSS_HOME%\bin 2.1 运行standalone.... 3、将开发包war复制放在C:\jboss7\standalo...
  • Web应用程序  (1)什么是Web应用程序  应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览 器端/服务器端应用程序,这类应用程序一般借助浏览器来运行。 ...
  • Web网站和Web应用程序的区别

    千次阅读 2019-05-22 11:01:42
    Web应用程序 新建后 具体区别 1、添加“一般处理程序” Web网站建立的一般处理程序没有“命名空间” Web应用程序建立的一般处理程序有“命名空间” 为什么网站不需要命名空间?   命名空间就是为了区分类同名的...
  • 桌面应用程序与web应用程序

    千次阅读 2017-10-25 10:36:54
    简单而言,在本地有应用程序文件的应用,都是桌面应用,在浏览器中使用的应用都是web应用。 原理上而言: 桌面应用有自己独立的进程与操作系统进行消息通讯,操作系统对事件进行检测,传递给桌面应用进程,桌面...
  • Web应用框架汇总

    千次阅读 2018-03-05 14:23:17
    Web应用框架(Web application framework)是一种开发框架,用来支持动态网站、网络应用程序及网络服务的开发。其类型有基于请求的和基于组件的两种框架,Web应用框架有助于减轻网页开发时共通性活动的工作负荷,...
  • 什么是Web应用程序

    万次阅读 2017-11-22 12:11:33
    Web应用程序 Web应用程序是一种可以通过Web访问的应用程序。Web应用程序的一个最大好处是用户可以很容易访问应用程序。用户只需要有浏览器即可,不需要再按照其他软件。   二 为什么要学习Web应用程序 Web...
  • 使用web框架web.py来构建web应用

    千次阅读 2016-09-04 20:02:05
    (1)编写web.py的web应用 import web #引入web.py的包 #定义web应用的路由规则 urls = ( '/', 'index' ) #与是某条路由规则的处理类,提供GET/POST等HTTP method class index: def GET(self):
  • python flask搭建web应用

    万次阅读 多人点赞 2017-03-14 08:42:06
    python flask搭建web应用 1.flask介绍 2.所需工具和环境 3.搭建flaskApp 4.具体程序编写 5.综上 1.flask介绍flask是一款十分轻量级的python Web应用框架,也被认为是一种微框架,我最初喜欢使用是因为flask...
  • Web应用指纹检测

    千次阅读 2017-09-06 17:29:03
    0×01 Web 应用技术概览 1.1 架构 大多数 web 应用可以粗略划分为三个组件(component)。 1、客户端, 大多数情况下是浏览器。 2、服务端, Web 服务器接收客户端的HTTP请求并进行响应。另外,有时候 Web服务器只转发...
  • Web应用体系结构

    千次阅读 2017-06-03 22:33:32
    简单介绍Web应用的体系结构
  • 关于Web应用和Django创建

    万次阅读 2018-07-03 13:36:01
    web应用为什么使用web 应用基于浏览器访问, 浏览器普及率高使用方便, 不用单独安装客户端更新不用用户更新版本, 直接后台升级后,用户可以直接使用使用过程输入URL --> 询问IP地址(DNS) , 返回IP地址 --&...
  • web应用和web.xml文件

    千次阅读 2016-01-27 13:54:01
    构建Web应用手动建立一个web应用 1.任意目录建立demo文件夹,用于建立一个web应用 2.文件夹中建立一个WEB-INF文件夹(区分大小写) 3.在WEB-INF中建立web.xml文件,并添加下面的代码(可以从Tomcat中的其他应用复制...
  • Progressive Web App 的外观和行为都同原生移动应用类似,但它本质上上仍然是Web应用,不需要通过应用商店部署 Ashteya Biharisingh是一名混合移动应用开发人员。据她介绍: Progressive Web App有许多好处。对...
  • Web应用运行原理

    千次阅读 2017-06-29 21:05:43
    JSP/Servlet本文描述web应用在服务器上启动、访问的原理及过程,主要从jsp+Servlet模式角度阐述。web服务器和web容器概念?web服务器 Web服务器是指能够为发出请求的浏览器提供文档的程序,应用层使用的是HTTP协议...
  • Spring Boot开发Web应用

    万次阅读 2017-10-24 15:28:34
    那么本篇就在上篇基础上介绍一下如何进行Web应用的开发。 静态资源访问在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。默认配置Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需...
  • 5.3 Java Web应用目录结构

    千次阅读 2018-01-21 21:48:11
    web模块, 也就是 Servlet 规范中的web应用。在Java EE架构中, web模块(web module) 是最小的web部署单元。 其中包含web组件以及静态资源; 如图片之类的静态资源也被称为 web资源。 除web组件和web资源以外, web...
  • web应用程序的部署

    千次阅读 2017-06-03 14:35:25
    一、配置任意目录下的web应用程序 一个Web容器可以运行多个web应用程序,每个web应用程序都有一个唯一的上下文根。对于Tomcat来说,%CATALINA_HOME(安装路径)%\webapps目录下的每一个子目录都是一个独立的Web应用...
  • Web应用架构

    千次阅读 2016-06-09 10:20:32
    近期有幸来到了阿里的菜鸟网络实习,阴差阳错地安排到了Web应用开发。但是我真的是一点都不懂的啊...就是那种连启动tomcat都会想想的那种。到现在已经实习了两周了。学习了很多,很多概念也很是混乱,action,...
  • 如题,上篇我们参照springboot官网,跑了下官方的helloworld,本篇我们尝试自己使用springboot创建项目。...一、springboot web应用程序  创建一个 maven工程,起名为 helloSpringBoot,这是一个基于sp...
  • 用Flutter开发Web应用

    千次阅读 2019-05-13 16:57:41
    Flutter作为一个可移植的UI框架,已经支持现代Web应用开发了!我们很开心已经发布了SDK预览版,这样你可以在Web浏览器里直接运行你的Flutter UI代码。 原文链接:Flutter Web - 目标全平台开发的Flutter再下一城!-...
  • javaweb站点根目录和web应用根目录应用场景

    千次阅读 多人点赞 2019-02-23 18:05:11
    什么叫Web站点的根路径,什么叫Web应用的根路径,在对它们的 "/"应用场景中,到底是代表站点路径还是web应用路径开始路径, 恐怕是很多人在web开发时候经常被搞混的的问题。现在简单解答如下:  问题:...
  • web应用基本框架图

    千次阅读 2019-01-22 14:57:56
    一、常见框架图 web应用框架1.0 
  • Web应用程序和Web网站

    千次阅读 热门讨论 2014-10-30 20:58:44
    在牛腩接近尾声调试代码时,有时调试半天也调不出个什么效果,无奈之举,先和源码对比一下,发现我的web层中每个网页下面多个aspx.designer.cs 文件(设计器文件),网上说有这个文件说明你这个项目是web应用程序而...
  • web应用防火墙的作用

    千次阅读 2018-09-20 11:28:08
    web应用防火墙也被称为网站应用级入侵防御系统,按照一些常规的定义,WAF是指通过一些列针对HTTP/HTTPS的安全策略专门为web应用提供保护的产品。它主要用于防御针对网络应用层的攻击,像SQL注入、跨站脚本攻击、参数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 321,093
精华内容 128,437
关键字:

web应用