-
-
Notifications
You must be signed in to change notification settings - Fork 78
TutorialWebSite
In this tutorial, you will learn how to create a web site like this with NPL. The following topics will be covered:
- setup NPL web development environment
- NPL server page programming model
- Debugging and logs
- Use table database
- MVC frameworks for serious web development
For complete explanation behind the scene, please read WebServer
For more information, see Install Guide. The following is only about setting up the recommended IDE under win32.
- Install Git so that you can call
git
command from your cmd line. - Download ParacraftSDK
- or you can clone it by running:
git clone https://github.com/LiXizhi/ParaCraftSDK.git
- Make sure you have updated to the latest version, by running
./redist/paracraft.exe
at least once - Run
./NPLRuntime/install.bat
- The NPL Runtime will be automatically copied from
./redist
folder to./NPLRuntime/win/bin
- The above path will be added to your
%path%
variable, so that you can run npl script from any folder.
- The NPL Runtime will be automatically copied from
- Download and install Visual Studio Community Edition: the free version of
visual studio
- In visual studio, select
menu::Tools::Extensions
, and search online fornpl
orlua
to install following plugins: NPL/Lua language service for visual studio: this will give you all the syntax highlighting, intellisense and debugging capability for NPL in visual studio.
- In visual studio, select
NPL is a dynamic language, it does not require you to build anything in order to run, so you can create any type of visual studio project you like and begin adding files to it.
There are two ways to do it. Please use the lazy way
but read the manual one
.
- run
git clone https://github.com/tatfook/wikicraft.git
- cd into the source directory and run
./update_packages.bat
- open the
sln
file with visual studio - run
start.bat
, you will see the npl server started.- visit http://localhost:8099 for the main site.
- visit http://127.0.0.1:8099 for the NPL code wiki web site.
- rename the project to your preferred name and begin coding in the
./www
folder. (see next chapter) - finally, see the
configure the project property
step inthe manual one
section.
- create an empty visual studio project: such as a C# library or VC++ empty project.
- install the main npl package into your project root directory.
mkdir npl_packages
cd npl_packages
git clone https://github.com/NPLPackages/main.git
- configure the project property to tell
visual studio
to start NPLRuntime with proper command line parameters when we pressCtrl+F5
.- For the external program: we can use either
npl.bat
orParaEngineClient.exe
, see below - external program:
D:\lxzsrc\ParaCraftSDKGit\NPLRuntime\win\bin\ParaEngineClient.exe
- command line parameters:
bootstrapper="script/apps/WebServer/WebServer.lua" port="8099" root="www/" servermode="true" dev="D:/lxzsrc/wikicraft/"
- working directory:
D:/lxzsrc/wikicraft/
- Note: the
dev
param and working directory should be the root of your web project directory.
- Note: the
- For the external program: we can use either
- add main project at
npl_packages/main/*.csproj
to your newly created solution file, so that you have all the source code of NPL and NPL web server for debugging and documentation. Reopen your visual studio solution file for NPL documentation intellisense to take effect. - create
www/
directory and addindex.page
file to it. - Press
Ctrl+F5
in visual studio, and you will launch the web server.- visit http://localhost:8099/index.page in your browser.
NPL web server itself is an open source application written completely in NPL. For its complete source code, please see script/apps/WebServer/WebServer.lua
in the main npl_package.
So to start a website in a given folder such as ./www/
, we need to call
npl bootstrapper="script/apps/WebServer/WebServer.lua" port="8099" root="www/"
Normally, we also need to place a file called webserver.config.xml
in the web root folder.
If no config file is found, default.webserver.config.xml
is used, which will redirect all request without extension to index.page
and serve *.npl
, *.page
, and all static files in the root directory and it will also host NPL code wiki at http://127.0.0.1:8099. For more information, please see WebServer
NPL server page is a mixed HTML/NPL file, usually with the extension .page
. You can now play with it by creating new *.page
file in ./www/
directory under visual studio. For more information, see NPLServerPage.
Intellisense in visual studio
If you have installed NPL language service plugin and added main package csproj to your solution, you should already noticed intellisense in your visual studio IDE for all *.lua, *.npl, *.page
files.
Everything under ./Documentation
folder is used for auto-code completion. Please see npl_packages/main/Documentation/
, you can also add your own intellisense by adding xml files to './Documentation' folder. For more information, please see NplVisualStudioIDE.
At runtime time, server page is preprocessed into pure NPL script and then executed. For example
<html><body>
<?npl for i=1,5 do ?>
<p>hello</p>
<?npl end ?>
</body></html>
Above server page will be pre-processed into following NPL page script, and cached for subsequent requests.
echo ("<html><body>");
for i=1,5 do
echo("<p>hello</p>")
end
echo ("</body></html>");
When running above page script, echo
command will generate the final HTML response text to be sent back to client.
Normally, a single NPL server can serve over 1000 dynamic page requests per seconds and with millions of concurrent connections (limited by your OS). It can serve over 40000 req/sec if it is very simple dynamic page without database query. See NPLPerformance and WebServer for details.
Unlike other preprocessed page language like PHP
, database queries inside npl page file are actually invoked asynchronously, but written in the more human-friendly synchronous fashion. Please see Use table database
chapter for details.
Most page errors are output to the HTTP stream, which is usually directly visible in your browser. For complete or more hidden errors, please keep ./log.txt
in your working directory open, so that you can read most recent error logs in it. Your error is usually either a syntax error or a runtime error.
To debug with NPL Code wiki
- launch your website
- right click on the line in visual studio and select
NPL set breakpoint here
in the context menu. - the
http://127.0.0.1:8099/debugger
page will be opened.- Please note, your actual web site is at
http://localhost:8099
. They are two different websites hosted on the same port by the same NPL process, you can use the first127.0.0.1
website to debug the secondlocalhost
website, because both web sites share the same NPL runtime stack/memory/code.
- Please note, your actual web site is at
Please see DebugAndLog for general purpose NPL debugging.
Download Paracraft | ParacraftSDK | copyright by tatfook 2016 | upload image